在Rails中使用check_box_tag的自定义ID

Gan*_*kar 16 checkbox ruby-on-rails form-helpers

在rails中使用check_box_tag帮助程序时如何设置自定义ID?

我有一个循环,它根据集合创建了一堆复选框:

- subject.syllabus_references.each do |sr|
      = check_box_tag 'question[syllabus_reference]', sr.id, :id => sr.id
      = label_tag sr.id, sr.name
Run Code Online (Sandbox Code Playgroud)

我想设置一个自定义ID,以便我的复选框标签正常工作,但我似乎无法弄清楚如何(:id => sr.id不起作用......).

问题也可能出在我定义标签的方式上,所以如果我可以在没有设置自定义ID的情况下引用正确的复选框,那么也可以......

nan*_*nda 18

我在我的应用程序中使用它来从集合创建复选框标记并提交它们的数组:

<% @cursos.each do |c| %>
  <span class='select_curso'>
    <%= check_box_tag "vaga[curso_ids][]",
      c.id, (checked = true if form.object.curso_ids.include?(c.id)) %>
    <%= label_tag "vaga[curso_ids][][#{c.id}]", c.nome %>
  </span>
<% end %>
Run Code Online (Sandbox Code Playgroud)

所以在params中,我有一个数组"curso_ids"=> ["1","3","5"]而不是字符串"curso_ids"=>"5".如果要返回单个值,请使用vaga [curso_id],否则使用vaga [curso_ids] []返回数组.


Wil*_*ins 18

如果给复选框一个额外的参数,它将起作用:

= check_box_tag 'question[syllabus_reference]', 1, nil, :id => sr.id
Run Code Online (Sandbox Code Playgroud)


Leo*_*lán 11

@Ganesh,在您的解决方案中,生成的params散列具有以下形式:

params[:question][:syllabus_reference] = {1 => 1, 2 => 2, 3 => 3, ...}
Run Code Online (Sandbox Code Playgroud)

这些应该更适合你:

check_box_tag "question[syllabus_reference][]", sr.id, checked, {:id => "question_syllabus_reference_#{sr.id}"
Run Code Online (Sandbox Code Playgroud)

请注意,第三个参数(已选中)是必需的.得到的params数组将是

params[:question][:syllabus_reference] = {1, 2, 3, ...}
Run Code Online (Sandbox Code Playgroud)