ビューの1つでform_tagを使用すると、attr_accessorにいくつか問題が発生します。
<%= form_tag set_location_locations_path, :method => "post" do %>
<%= collection_select(:location, :location_id, Location.all, :id, :location_name) %>
<%= submit_tag "Go" %>
<% end %>
そして私のロケーションモデルにはこれがあります:
attr_accessor :location, :location_id
また、attr_writerも試してみました。
フォームを送信すると、コンソールに次のように表示されます。
ActionView::Template::Error (undefined method `location_id' for "1":String):
そして、投稿は次のようになります。
Parameters: {"utf8"=>"✓", "authenticity_token"=>"oY+jSCV9Mz9iVJnJItADnHdpGhct5DhKpQ+w6JUvgNQ=", "location"=>{"location_id"=>"1"}, "commit"=>"Go"}
なぜこれが機能しないのか理解できませんか?以前は、attr_accessorを問題なく使用していました。足りないものはありますか?
- - 編集 - -
コントローラー(あまりありません)
def set_location
@location = params[:location][:location_id]
end
ここでもあまり表示しません:
= @location