0

私は Rails を初めて使用し、オプション チューザーに大きな問題があります。ユーザーは、selectbox または text_field を使用する場合、チェックボックスごとに選択できます。jquerycode は、div を表示または非表示にすることでその役割を果たします。しかし、フォームを送信すると、:task_name常にtask_newdiv の値が取得されますが、task_use. 私が間違っていることは何ですか?

Rails関数を介してdivを非表示/表示する方法はありますか? たぶん、いくつかの tmp 変数を設定して、:task_name に値を与えますか?! これはどのように行うことができますか?

更新: でトリックを試しましたtmp_variables。値を取得しますが、値を に設定する方法に行き詰まりtmp_variableました:task_name<% :task_name = @tmp_variable%>動作しません。

コードは次のとおりです (new.html.erb):

 Create new Task :
  <input type="checkbox" value="false" name="check" id="check" checked="false" />
  </div>

  <div class="task_use" id="task_use" style="display:block;">
    <%= f.fields_for :task do |t|%>  
    <%= t.select :task_name, Task.all.collect {|n|[n.task_name]}%>
    <%end%>
 </div>
  <div class="task_new" id="task_new" style="display:none;">
    <%= f.fields_for :task do |t|%>
    <%= t.label :task_name %><br />
    <%= t.text_field :task_name %>
    <%end%>
  </div>
  <div class="actions">
    <%= f.submit %>
  </div>
  <% end %>

   <script>

   $(document).ready(function() {
   $("#check").change(function () {
   if ($('#check').checked == false) {

   } else {
   $('#task_new').toggle();
   $('#task_use').toggle();
   }
   });
   }); 
   </script>
4

1 に答える 1

0

Rails の場合、どの div を表示または非表示にするかは問題ではありません。両方のコード フラグメントが評価されます。したがって、2 番目のフラグメントは、task_name に設定された値を単純に上書きします。

2つの別々のフォームを使用してそれらを切り替えることができますが、切り替えたくない上記のフィールドよりも多くのフィールドがあると思います:)

おそらく、実際の task_name DOM 要素を置き換えてみて (やや「本物の」トグル)、同時にこの男が行ったように値をコピーすることもできますが、かなり複雑に聞こえます :(

于 2012-09-13T15:05:42.947 に答える