2012-11-27 150 views
3

我有一個布爾值使公共或私人評論。使布爾表單字段隱藏

布爾值是提交中的列,我現在用笨拙的方式工作,想從表單中刪除複選框,替換爲隱藏字段,以便所有用戶都看到提交按鈕,有條件基於布爾狀態:

提交#顯示:

<% 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

但我寧願使用一個隱藏字段和條件,以保持它的簡單。

是否可以使用隱藏字段來設置表單中的布爾值,還是必須使用自定義方法和路由?

+0

'<%= f.hidden_​​field:comment_show%>'沒有按那麼工作? – froderik

+0

@froderik它似乎沒有看到隱藏的領域,以及hidden_​​field_tag –

回答

4

一看便知這太問題:rails simple_form - hidden field - create?

由於您使用簡單的形式,你可以做這樣的事情:

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

簡單而美麗。謝謝!! <%= f.input:comment_show,:as =>:hidden,:input_html => {:value => true}%> –