【发布时间】:2015-02-16 05:53:51
【问题描述】:
我有以下对象:
# Table name: interests
#
# id :integer not null, primary key
# client_id :integer
# condition :string(255)
belongs_to :client
我使用以下形式来创建新对象:
= simple_form_for interest do |f|
= f.error_notification
.form-inputs
= f.hidden_field :client_id, value: interest.client_id
= f.input :condition, as: :radio_buttons, collection: ['Used', 'New'], boolean_style: :inline
.form-actions
= f.button :submit
我在同一页面上多次呈现此表单,但遇到与页面上每个表单中相同输入的 ID 匹配的每个单选按钮输入的 ID 的问题。
这是在页面上多次呈现的内容:
<div class="input radio_buttons optional interest_condition">
<label class="radio_buttons optional control-label">Condition</label>
<span class="radio">
<input class="radio_buttons optional" id="interest_condition_used" name="interest[condition]" type="radio" value="Used">
<label class="collection_radio_buttons" for="interest_condition_used">Used</label>
</input>
</span>
<span class="radio">
<input class="radio_buttons optional" id="interest_condition_new" name="interest[condition]" type="radio" value="New">
<label class="collection_radio_buttons" for="interest_condition_new">New</label>
</input>
</span>
</div>
我尝试的解决方案:
每个表单都可以通过interest.client_id 访问一个唯一的ID。我打算将input 上的id 和下面label 上的for 更改为使用该ID 的东西,以确保每个版本都是唯一的:
= f.input :condition, as: :radio_buttons, collection: ['Used', 'New'],
boolean_style: :inline,
input_html: { id: 'interest_condition' + interest.client_id.to_s},
label_html: {for: 'interest_condition' + interest.client_id.to_s}
但这做错了两件事:
- 我丢失了通常由集合生成的动态 id,每个
id/for实际上是interest_condition#{interest.client_id}而不是interest_condition_new#{interest.client_id}和interest_condition_used#{interest.client_id}。 - 将
label_htmlfor值与label_html: {for: 'interest_condition' + interest.client_id.to_s}分配给单选按钮集合的父标签而不是单选按钮本身之后的标签分配for值(这通过@ 启用987654339@)
以上代码生成的代码示例:
<div class="input radio_buttons optional interest_condition">
<label class="radio_buttons optional control-label" for="interest_condition7">
Condition
</label>
<span class="radio">
<input class="radio_buttons optional" id="interest_condition7" name="interest[condition]" type="radio" value="Used">
<label class="collection_radio_buttons" for="interest_condition_used">
Used
</label>
</span>
<span class="radio">
<input class="radio_buttons optional" id="interest_condition7" name="interest[condition]" type="radio" value="New">
<label class="collection_radio_buttons" for="interest_condition_new">
New
</label>
</span>
</div>
如何将自定义值附加到页面上呈现的每个特定表单到我的单选按钮的id 和form 属性?
【问题讨论】:
标签: ruby-on-rails forms radio-button simple-form