CakePHPもそうだったんだけど、Rails?なのかしらないが、ControllerでいろいろやってViewを開くための下準備を行う。
作り方はRedmineプラグイン開発 – まずはHello Worldでしょをみてみてー。
お約束
Redmineのプラグインでは、unloadableと書いておかないとだめらしい。
class RoadmapsMainController < ApplicationController unloadable ・・・ end
これがないと「A copy of ApplicationController has been removed from the module tree but is still active!」と怒られるらしい。(by maeda.na@はてなさんを参考のこと)
また、プロジェクトメニューにプラグインを表示しているときには、Controllerのどこかで、
@project = Project.find(params[:project_id])
としないと、「概要」「活動」・・・とかのタブが消えるらしい。これもby maeda.na@はてなさんを見てわかった。
パラメタの受け取り
paramsってところからとってくるだけ。@のついた、インスタンス変数にあげて、Viewにつなぐことができる。
@start_date = params[:start_date] @due_date = params[:due_date]
こういう処理はinitとかいうメソッドでやってしまうのもいいかも。
def init @assigned_to_id = params[:assigned_to_id] @start_date = params[:start_date] @due_date = params[:due_date] @all_users = User.find(:all, :conditions => ["status = 1"]) if @assigned_to_id @target_user = User.find(:first, :conditions => ["id = ?", @assigned_to_id]) end end
Viewではインスタンス変数などを表示するだけ。上のソースである@all_usersをSelectボックスにしてみると・・・
<select name="assigned_to_id"> <% @all_users.each do |user| %> <option value="<%= user.id %>"><%= user.name %></option> <% end %> </select>
Controllerと同じ感覚で書ける。セッションをまたぐときとかはまだ謎。