calendar_helperにformを入れる。

calendar_helperの日付の中にformを入れる。
カレンダーのセル内にテキストを挿入したい場合、

cell_text << hoge

といった具合にして使う。

これがまた曲者で,form_forやform_tagが使えない。

cell_text << form_tag(~~~~) do

とした場合、cell_text で"do"を受け付けてくれないのか、
構文エラーになってしまう。form_forも同様。
試行錯誤して色々な組み合わせでdoを読み込ませようとしたが失敗。



次の方法としてcell_textの外側、つまりカレンダーテーブルの上にformをつくり、カレンダー内の各セルのsubmitにnameを付け、それを識別させてパラメータを取得するように方針変更。

cell_text << submit_tag('New', :name => hoge)

view側でsubmitに識別を持たせる。

unless params[:hoge].nil?

controller側でちゃんと送信されたか判定。
これもうまく行ったように思えたが、何故かかならず最後にあるsubmitボタンのnameを取得してしまう。テーブルの外にform作るのって無理だっけ?
この辺はhtmlの知識だな〜。これも解決策が見つからず。


他の解決策が浮かばないので、悔しいが静的にformタグを挿入。
たぶんパス設定すれば動的にできるから、これでもいいっちゃいいか。
あと静的に入れた場合、railsはInvalidAuthenticityTokenエラーを出すようになっているので、controllerに許可したいメソッドを

class hogeController < ApplicationController
  skip_before_filter :verify_authenticity_token, :only => :hoge

と記述して、これを回避。

参考InvalidAuthenticityTokenエラー - satake7’s memo