代码之家  ›  专栏  ›  技术社区  ›  rmcsharry

Rails 5.1 radio_button_标签防止点击按钮

  •  0
  • rmcsharry  · 技术社区  · 9 年前

    我有一个用户模型。每个用户 has_one

    在用户窗体上,我使用以下选项将包选项呈现为单选按钮:

      <% Package.all.each do |p| %>
        <div class="switch-field">
          <%= radio_button_tag('package[id]', p.id) %>
          <%= label_tag("package_#{p.id}", number_to_currency(p.price)) %>
        </div>
      <% end %>
    

    删除[id]:

      <% Package.all.each do |p| %>
        <div class="switch-field">
          <%= radio_button_tag('package', p.id) %>
          <%= label_tag("package_#{p.id}", number_to_currency(p.price)) %>
        </div>
      <% end %>
    

    然后可以单击它们。

    "user"=>{..user field.., "package"=>{"id"=>"6"}}
    

    我希望这是Rails提交数据的方式(控制器具有以下功能:

    wrap_parameters :user, include: [:event, :package]
    

    那么,如何使用“package[id]”作为组的名称来让单选按钮工作呢?

    1 回复  |  直到 9 年前
        1
  •  1
  •   Simple Lime    8 年前

    这里的问题只是生成的 radio_button_tag label_tag .你有几个选择来解决这个问题。

    选项1-快速修复

    使用代码查看页面的html,单选按钮的id为 "package_id_0" "package_0" ,所以我们只需要更新 label_标签

    <% 3.times do |x| %>
      <div class="switch-field">
        <%= radio_button_tag('package[id]', x) %>
        <%= label_tag("package_id_#{x}", number_to_currency(x * 1.50)) %>
      </div>
    <% end %>
    

    选项2-更新单选按钮

    如果你想的话 而不是 你可以把它传给 单选按钮标签

    <% 3.times do |x| %>
      <div class="switch-field">
        <%= radio_button_tag('package[id]', x, false, id: "package_#{x}") %>
        <%= label_tag("package_#{x}", number_to_currency(x * 1.50)) %>
      </div>
    <% end %>
    

    选项3-使用块标签标记

    <% 3.times do |x| %>
      <div class="switch-field">
        <%= label_tag do %>
          <%= radio_button_tag('package[id]', x) %>
          <%= content_tag(:span, number_to_currency(x * 1.50), class: 'label') %>
        <% end %>
      </div>
    <% end %>