Redmineプラグイン開発 – Controllerの使い方

感想おまちしてます!

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と同じ感覚で書ける。セッションをまたぐときとかはまだ謎。