Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/62.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.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 4如何通过选择标签保存_Ruby On Rails_Ruby On Rails 4_Html Select - Fatal编程技术网

Ruby on rails Rails 4如何通过选择标签保存

Ruby on rails Rails 4如何通过选择标签保存,ruby-on-rails,ruby-on-rails-4,html-select,Ruby On Rails,Ruby On Rails 4,Html Select,我有这样的看法 <%= form_tag member_survey_path(@survey), :method => :post do %> <% @survey.each do |s| %> <td><%= s.title %></td> <td><%= select_tag 'survey[][status]', options_for_select([['AAA',"0"],['DDD',"1

我有这样的看法

<%= form_tag member_survey_path(@survey), :method => :post do %>
 <% @survey.each do |s| %>
  <td><%= s.title %></td>
  <td><%= select_tag 'survey[][status]', options_for_select([['AAA',"0"],['DDD',"1"],['BBB',"2"],['CCC',"3"]]) %> </td>
 <% end %>
<%= submit_tag 'submit', :class => "btn new_btn" %>
<% end %>
:post do%>
“新btn_btn”%>

我不知道如何在控制器中执行操作,以及如何通过调查。id

更改select标记的名称属性以获得每个调查的id:

<%= select_tag "survey[#{s.id}][status]" ....
其中123、21和36是测量对象的ID。然后,在控制器中,您可以执行以下操作:

params[:survey].each do |survey_id, attributes|
  if survey = Survey.find_by_id(survey_id)
    survey.update_attributes(attributes)
  end 
end
如果您想在该表单中对调查中的其他内容进行编辑,这很容易:例如,如果您也想编辑名称,您可以添加

<td><%= text_field_tag "survey[#{s.id}][name]", s.name %></td>
您仍然可以将调查的所有属性整齐地包含在一个散列中

顺便说一句,把变量称为“s”之类的东西是不好的做法,因为它不能告诉读者(将来可能包括你)它是什么。Rails的约定是以活动记录对象的类命名,您可以这样说

@surveys.each do |survey|
   ..etc

为什么你要使用
@survey.each do
?谢谢你的答案,但也许应该在“survey[{s.id}][name]”中更改“survey[{s.id}][name]”,这样就行了^^^^,你的解释对我真的很有帮助!!!!thx非常多,它不适用于单引号?(我花了一些时间在你的评论中找出了两者之间的区别)。真奇怪。我不知道为什么会这样,它们都是字符串。我不知道为什么,但是在单引号中不能加载#{s.id},在双引号中可以加载。当然,是的:这是Ruby的一条规则:可以在双引号和反勾号中使用#{},但不能在单引号中使用。我相信当时有一个很好的理由:)我忘了-对不起!我会修改我的答案,以防将来有人看到我的答案而不看评论。好的,我明白了!!!非常感谢你的解释。你真是个好人^^
    params = {:survey => {123 => {:status => 0, :name => "foo"}, 21 => {:status => 1, :name => "bar"}, 36 => {:status => 0, :name => "baz"}}} 
@surveys.each do |survey|
   ..etc