表单中的Rails3.2选项选择器

时间:2012-09-13 14:00:57

标签: ruby-on-rails ruby-on-rails-3

我是Rails的新手,我对选项选择器有一个大问题。 如果用户想要使用selectbox或text_field,则可以选择每个复选框。 jquerycode通过显示或隐藏div来完成他的工作。 但是当我提交表单时,:task_name始终是task_new div的值,但永远不会是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>

1 个答案:

答案 0 :(得分:0)

对于Rails,显示或隐藏哪个div无关紧要。将评估两个代码片段。因此,第二个片段只是覆盖为task_name设置的任何值。

您可以使用两个单独的表单并在这些表单之间切换,但我想您的字段多于上面列出的您不想切换的字段:)

也许你可以尝试替换实际的task_name DOM元素(somwhat一个“真正的”切换),同时将值复制为this guy did,但听起来很复杂:(