Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.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 3 回路中的一个按钮(质量分配)_Ruby On Rails 3 - Fatal编程技术网

Ruby on rails 3 回路中的一个按钮(质量分配)

Ruby on rails 3 回路中的一个按钮(质量分配),ruby-on-rails-3,Ruby On Rails 3,我有一个表单,它有一个循环,你可以在下面看到 我的目标是: text | checkbox | text2 | checkbox | text3 | checkbox | text4 | checkbox | ______ button ------ 若我点击按钮,我的表格会改变,若我选择了复选框。所以它是一种形式的一个按钮,有一个循环 问题: 只有最后一项粘贴成功,(不知道为什么)例如,如果我更改了最后一项,这是可以的,但当我更改第一项、第二项(例如)和最后一项时,我只在最后一项中

我有一个表单,它有一个循环,你可以在下面看到

我的目标是:

text   | checkbox |
text2  | checkbox |
text3  | checkbox |
text4  | checkbox |
______
button
------
若我点击按钮,我的表格会改变,若我选择了复选框。所以它是一种形式的一个按钮,有一个循环

问题:

只有最后一项粘贴成功,(不知道为什么)例如,如果我更改了最后一项,这是可以的,但当我更改第一项、第二项(例如)和最后一项时,我只在最后一项中得到更改:(

没有看到我的循环我想:(

我的观点

<%= form_for :task, :url => { :controller => :tasks, :action => :update } do |f| %>

  <% @tasks.each_with_index do |task, index| %>

    <%= f.fields_for task do |task_form| %>

      <%= task_form.text_field :task %>  | <%= task_form.check_box :is_active %>  <%= task_form.hidden_field :id %>

    <% end %>

  <% end %>

  <br/><br/>

  <%= f.submit 'Update' %>


<% end %>
这就是我得到的错误:

{"utf8"=>"✓",
 "authenticity_token"=>"vn0DUQhRa2zBguCFRf/fY/cYnzKYAkio0MwDUd4/mC8=",
 "task"=>{"task"=>{"task"=>"dlaj testa!",
 "is_active"=>"1",
 "id"=>"11"}},
 "commit"=>"Update"}

undefined method `each' for nil:NilClass

我相信这是说,
tasks.each do | task |
是原因。
tasks
是零,这是您上面定义的

而不是

tasks=Task.find(:all, :conditions => ["id=?", params[:task][:id]])
我可能会这样写:

tasks = Task.where(id: params[:task][:id])
这将返回一个包含所有任务的数组,即使它是一个空数组

然后调用
。每个
都不应该失败,因为它是空的

tasks = Task.where(id: params[:task][:id])