【问题标题】:Rails 3: Form within a loop?Rails 3:在循环中形成?
【发布时间】:2012-01-09 20:07:37
【问题描述】:

我有一个待办事项列表,我基本上是在尝试允许用户勾选一个复选框并使用 ajax 将其标记为完成,但是我在知道如何指定我要编辑“任务”时遇到了一些真正的麻烦(在一个“列表”)在我的控制器中。

目前,我的循环显示了“列表”的所有“任务”。但是,当我尝试使用我的清单添加表单时,我收到了错误:

Couldn't find Task without an ID

不确定如何最好地声明我要显示该“列表”的所有“任务”,但我还希望允许用户编辑该列表中的每个任务。

这是我的看法:

    <% @tasks.each do |task| %> 


<%= form_for task, :remote => true do |f| %>
  <%= f.check_box 'complete', :class => 'submittable' %> 
  <%= f.label :complete %>
<% end %>


<tr><td><h3><%=task.description %></h3></td><%=task.complete%><td></td>
     <td><%= link_to 'Edit Task',edit_list_task_path(@list, task), :id => "edit_#{task.id}",:class=>"btn info" %></td>
     <td><%= link_to 'Delete Task', list_task_path(@list, task), :method => :delete, :confirm => "Are you sure?", :id => "delete_#{task.id}", :class=>"btn danger "%></td></tr>

</tr>

<%end%>

还有我的控制器:

  def index
    @tasks = @list.tasks
    @task = @list.tasks.find()
    @task.update_attributes params[:task]

 end

更新:

根据以下评论进行更改。还有其他建议吗?

【问题讨论】:

    标签: jquery ruby-on-rails forms ruby-on-rails-3


    【解决方案1】:

    你需要

    <%= form_for task, :remote => true do |f| %>
    

    而不是

    <%= form_for @task, :remote => true do |f| %>
    

    即将@task 替换为task

    我不知道这是否能解决您的问题,但至少这是一个明显的错字。

    【讨论】:

    • 嗨!谢谢,我没有发现,但我仍然遇到同样的问题。还有其他建议吗?
    【解决方案2】:

    在Controller中,当你说.find()时,你需要传递任务的ID。

    【讨论】:

      猜你喜欢
      • 2020-07-28
      • 1970-01-01
      • 2011-11-05
      • 2017-01-22
      • 1970-01-01
      • 2016-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多