Ruby on rails Rails 3.2.8属性访问器似乎不使用表单标记
在我的一个视图中使用form_标记时,attr_访问器有一些问题Ruby on rails Rails 3.2.8属性访问器似乎不使用表单标记,ruby-on-rails,ruby,Ruby On Rails,Ruby,在我的一个视图中使用form_标记时,attr_访问器有一些问题 <%= form_tag set_location_locations_path, :method => "post" do %> <%= collection_select(:location, :location_id, Location.all, :id, :location_name) %> <%= submit_tag "Go" %> <% end %> 我
<%= form_tag set_location_locations_path, :method => "post" do %>
<%= collection_select(:location, :location_id, Location.all, :id, :location_name) %>
<%= submit_tag "Go" %>
<% end %>
我还尝试了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_访问器没有问题。有什么我遗漏的吗
----编辑----
管制员(那里不多)
在此处查看的内容也不多:
= @location
您的集合\u select需要一个具有方法Location\u id的Location实例。您正在将
'1'
赋值给@Location变量,因此它尝试'1'。将“设置位置”方法更改为类似以下内容:
def set_location
@location = Location.new(params[:location])
end
当您提交表单时,参数将按预期运行,因此您实际看到的错误在哪里?表单的要点是设置一些会话参数。出于测试目的,我只是提交到set_位置(在位置控制器中)。我试着用:@location=params[:location][:location\u id]来查看参数set\u location
看起来像什么?您是否在日志中的参数之前或之后收到模板错误?参数是正确的。我们需要查看您操作的控制器代码。更新问题。干杯。明白了。谢谢是否也可以获取位置id,以便选择下拉列表显示正确的位置?
= @location
def set_location
@location = Location.new(params[:location])
end