从父视图调用时,rails 4子操作失败

时间:2014-08-13 22:24:48

标签: nested nested-routes custom-routes

错误:“Param丢失或值为空:child”

我已嵌套对象(子控件和查看器位于父文件夹中)。在父详细信息页面上,我列出了表格中的所有子项。其他方法,如编辑,更新,新工作。但是我希望有一个链接我的方法'graduate',它可以在父页面上更改子属性graduate_date。我试图通过在Child controller#graduate action

中更改Time.now的毕业日期来实现
class ParentsController
    def show
        @parent = Parent.find params[:id]
        @children = @parent.children
    end

- 家长视图 -

<% @children.each do |child| %>
    <tr>
      <td><%= child.name %>
      <% if child.graduated? %>
        <td> graduated </td>
      <% else %>
        <td><%= link_to 'graduate now', graduate_parent_child_path(@parent, child) %></td>
      <% end %>
    </tr>
<% end %> 

- 模特 -

Parent: has_many
Child: belongs_to

- 子控制器 -

def graduate
  @parent = Parent.find params[:parent_id]                        ==> parent_id & id are correct
  @child = Child.find params[:id]
  @child.update_attribute(:graduation_date, Time.now.strftime(%m%d%Y)) ==> here does not updates!!!
end

- routes.rb -

resources :parents do
    resources children, controller: parent/children do
        member { match :graduate, via [get, patch] }   ==> rails forces me to use get
    end
end

Rais强迫我在路线中使用get。我已经连接到控制器,第2行“毕业”工作正常,但属性没有更新,但graduated_date已经指定为nil。

1 个答案:

答案 0 :(得分:0)

在您的ParentsController中设置@child,但在您的视图中,您需要找@children