Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails 3.2.8属性访问器似乎不使用表单标记_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails Rails 3.2.8属性访问器似乎不使用表单标记

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_标记时,attr_访问器有一些问题

<%= 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