3

コメントを公開または非公開にするブール値があります。

ブール値は送信の列であり、現在は不器用な方法で動作しており、フォームからチェックボックスを削除して隠しフィールドに置き換えたいと考えています。ブール状態:

提出物#show:

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

しかし、単純にするために隠しフィールドと条件を使用したいと思います。

非表示フィールドを使用してフォームにブール値を設定することは可能ですか?それともカスタム メソッドとルーティングを使用する必要がありますか?

4

1 に答える 1

4

このSOの質問に対する答えを参照してください: rails simple_form --hidden field --create?

単純なフォームを使用しているので、次のようなことができます。

 f.input :contest_id, :as => :hidden, :input_html => { :value => @contest.id }
于 2012-11-27T21:16:51.730 に答える