Ruby on rails 嵌套形式的布尔切换
我有一个Ruby on rails 嵌套形式的布尔切换,ruby-on-rails,ruby,ruby-on-rails-4,boolean,nested-resources,Ruby On Rails,Ruby,Ruby On Rails 4,Boolean,Nested Resources,我有一个问题控制器和一个嵌套的注释控制器。我的评论表单位于我的问题显示视图中 我试图在评论时添加一个复选框,该复选框将在我的问题上切换:closed=>boolean属性 <%= form_for @issue.comments.build, url: script_issue_comments_path(@script, @issue) do |f| %> <!-- Form , etc--> <%= form_for [@script, @issue] do
问题
控制器和一个嵌套的注释
控制器。我的评论表单位于我的问题显示视图中
我试图在评论时添加一个复选框,该复选框将在我的问题上切换:closed=>boolean
属性
<%= 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
您拥有的内部表单没有嵌套表单(在rails术语中),并且正如您所发现的,它不会以您想要的方式运行,因为它实际上与外部表单的提交无关
您可以采取的一种方法是,在注释上添加类似于comment\u closes\u issue
的属性,这样可以避免comments controller同时负责编辑问题(我认为这会很混乱)。然后,当您保存注释时,如果comment\u closes\u issue
为true,则更新父问题。。。这仍然会使两个模型之间的界限变得模糊一些,但是如果它们紧密相连,那么在您的应用程序中,这也许是可以的
编辑-下面是一个如何处理该问题的示例,假设评论属于某个问题:
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
class注释
那么在你看来,你可以让..
听起来不错,你能更新你关于如何
的答案来编码(第一次遇到这种问题)。@minijohn Sure。我添加了一个示例,对模型的结构方式进行了一些假设。希望能有帮助。工作很有魅力,谢谢!!