使布尔表单字段隐藏

时间:2012-11-27 20:50:19

标签: ruby-on-rails simple-form hidden-field

我有一个布尔值来公开或私有评论。

布尔值是提交中的一列,我现在让它以笨拙的方式工作,并希望从表单中删除复选框,替换为隐藏字段,以便所有用户看到的是提交按钮,条件基于布尔状态:

提交#显示:

<% if @submission.comment_show == true %>
    <%= render "hide_comment_form" %>
    <%= render "comments/comment" %>
 <% else %>
    <%= render "show_comment_form" %>
 </div>
 <% end %>

_show_comment_form

<%= simple_form_for [@contest, @submission] do |f| %>
   <div>
     <%= f.input :comment_show, label: false %>
     <%= hidden_field_tag :contest_id, @contest.id %>
         <%= f.submit "Make Comments Public", :class => 'btn btn-mini' %>
   </div>
 <% end %>

_hide_comment_form

 <%= simple_form_for [@contest, @submission] do |f| %>
       <div class ="">
      <%= f.input :comment_show, label: false %>
      <%= hidden_field_tag :contest_id, @contest.id %>
      <%= f.submit "Make Comments Private", :class => 'btn btn-mini' %>
    </div>
 <% end %>

我已经尝试过hidden_​​field_tag,但是没有任何运气让它运转起来。

此外,我已经看到一些更好的方法和路由来完成同样的事情: http://buckybits.blogspot.com/2011/09/simple-ajax-property-toggle-in-rails-30.html

但我更喜欢使用隐藏字段和条件来保持简单。

是否可以使用隐藏字段在表单中设置布尔值,还是必须使用自定义方法和路由?

1 个答案:

答案 0 :(得分:4)

请参阅此SO问题的答案:rails simple_form - hidden field - create?

由于您使用的是简单表单,因此可以执行以下操作:

 f.input :contest_id, :as => :hidden, :input_html => { :value => @contest.id }