gpt4 book ai didi

ruby-on-rails - 在数组而不是对象上使用 collection_radio_buttons 的 Rails 表单

转载 作者:行者123 更新时间:2023-12-02 03:10:32 25 4
gpt4 key购买 nike

Rails 有一个表单助手 f.collection_radio_buttons,它的操作与 f.collection_select 表单助手非常相似。

但是,f.colleciton_radio_buttons 仅适用于对象集合,不适用于简单数组。

例如,我可以有:

<%= f.select :attribute, ["First", "Second"] %>

但是没有:
<%= f.radio_buttons :attribute, ["First", "Second"] %>

因此,要使 f.collection_radio_buttons 使用一个简单的数组,我必须这样做:
<%= f.collection_radio _buttons :attribute, ["First", "Second"], :to_s, :to_s %>

这“有效”,但似乎很hacky。有没有更简洁的方法来引用数组的值而不是在其上调用 .to_s

最佳答案

也许这是一个旧帖子,但如果它对其他人有帮助,那么它就在这里。现在在 2019 年,我正在使用 Rails 5 应用程序,我有一个表单,我必须在其中显示给定属性的两个单选按钮。

我有一个辅助方法:

def get_company_segments
company = current_user.branch.company
[
[company.various_segment_fee, 'various', 'Varios'],
[company.metal_segment_fee, 'metal', 'Metal']
]
end

Output:
#=> [["12.6", "various", "Varios"], ["10", "metal", "Metal"]]

然后在我的表单 View 中,我有类似的内容:
<%= form.collection_radio_buttons(:segment, get_company_segments, :second, :last) do |segment| %>
<div class="form-check form-check-inline">
<%= segment.radio_button(class: 'form-check-input', id: "agreement_segment_#{segment.object.second}" %>
<%= segment.label(class: 'form-check-label', for: "agreement_segment_#{segment.object.second}") %>
</div>
<%- end %>

它呈现如下:

enter image description here

HTML 如下所示:

<div class="form-check custom-radio form-check-inline">
<input class="form-check-input" id="agreement_segment_various" data-fee="12.6" type="radio" value="various" name="agreement[segment]">
<label class="form-check-label" for="agreement_segment_various">Varios</label>
</div>
<div class="form-check custom-radio form-check-inline">
<input class="form-check-input" id="agreement_segment_metal" data-fee="10" type="radio" value="metal" name="agreement[segment]">
<label class="form-check-label" for="agreement_segment_metal">Metal</label>
</div>

我希望它可以成为其他人的一个很好的引用。 👻

关于ruby-on-rails - 在数组而不是对象上使用 collection_radio_buttons 的 Rails 表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40310013/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com