我有一个Issues
控制器和一个嵌套的Comments
控制器。我的评论表单位于我的问题显示视图。
我正在尝试在评论时添加一个复选框,以便切换:closed => boolean
上的Issue
属性。
<%= form_for @issue.comments.build, url: script_issue_comments_path(@script, @issue) do |f| %>
<!-- Form , etc-->
<%= form_for [@script, @issue] do |f| %>
<%= f.check_box :closed %> Mark as Closed
<% end %>
<% end %>
这显然不起作用。怎么能实现这个目标?
基本上我会将注释复选框放在评论的提交按钮旁边。因此,如果选中,则问题属性:closed
将设置为True
答案 0 :(得分:1)
你所拥有的内部形式不是嵌套形式(以rails术语表示),并且你发现它不会以你想要的方式表现,因为它与外形的提交没有关联
你可以做的一种方法,就是让评论控制器不能同时负责编辑问题(在我看来会很麻烦),就是要有一个类似comment_closes_issue
属性的东西。评论。然后,当您保存评论时,如果comment_closes_issue
为真,那么更新父问题......它仍然模糊了两个模型之间的界限,但是如果它们紧密相关,那么也许这样就可以了你的申请。
编辑 - 这是一个如何处理它的例子,假设一个注释属于一个问题:
class Comment < ActiveRecord::Base
belongs_to :issue
after_save :close_parent_issue, if: :comment_closes_issue
private
def close_parent_issue
issue.update_attributes closed: true
end
end
然后在您看来,您可以<%= f.checkbox :comment_closes_issue %>...