简单的必要性,但显然没有简单的方法来使用Simple Form。
我需要在使用简单表单的Rails表单中的每个无线电span
之前放置一个input
。我已成功将span
添加到this guidelines中所述的文本输入中,但我无法弄清楚如何使用单选按钮(以及检查)执行相同的操作框)。
我不想使用jQuery,我目前正在使用它作为解决方法。
正如@TarynEast在评论中提到的那样,我尝试使用以下代码创建初始化程序,我已经能够将span
标记添加到字符串input
。
# config/initializers/simple_form__spanner
class SpannerInput < SimpleForm::Inputs::Base
def input(wrapper_options)
merged_input_options = merge_wrapper_options(input_html_options, wrapper_options)
spanner_input = "<span></span>"
spanner_input << @builder.text_field(attribute_name,merged_input_options)
return spanner_input.html_safe
end
end
# the view code
<%= ff.input :xxx, label: 'XXX', as: :spanner %>
# the output in view
<div class="form-group spanner optional xxx">
<div class="control-label-wrap">
<label class="control-label spanner optional" for="xxx_1">XXX</label>
</div>
<span></span>
<input class="form-control spanner optional" type="text" value="some value" name="xxx[1]" id="xxx_1">
</div>
现在我希望能够用单选按钮和复选框做同样的事情。输出应该是这样的:
<label><span></span><input ... ></label>
<label><span></span><input ... ></label>
<label><span></span><input ... ></label>
我有一些东西可以某种方式做我想要的,即在一组单选按钮或复选框中每个输入span
。它输出input
标签之后的范围,但是在文本之前,它有点起作用。
该解决方案不会使用任何初始化程序,它只是为集合中的每个对象运行的 lambda 。
choices
的数组:
choices = [
{ label: "Foo", value: "foo" },
{ label: "Bar", value: "bar" }
]
# the view code
<%= ff.input :xxx,
collection: choices,
label_method: -> (choice){ "<span></span>#{ choice[:label] }".html_safe } %>
<label><input ... ><span></span> Foo </label>
<label><input ... ><span></span> Bar </label>