다음은 내 원본보다 나은 해결책입니다.
<%= f.collection_radio_buttons(
:gender, [['Male', 'Male'], ['Male', 'Male']], :first, :last
) do |b|
b.label { b.text + b.radio_button }
end
%>
당신도이도에 image_tag
같은 다른 헬퍼를 추가 할 수 있습니다 :
# form_for @user do |f|
# f.collection_radio_buttons(
# :options, [[true, 'Yes'] ,[false, 'No']], :first, :last
# ) do |b|
# b.label { b.radio_button + b.text }
# end
# end
내가이 당신을 위해 무엇을 찾고있는 생각 : 코드에서
<%= f.collection_radio_buttons(
:gender, [['Male', 'Male'], ['Male', 'Male']], :first, :last
) do |b|
b.label { image_tag("#{b.text}.png") + b.radio_button }
end
%>
이 솔루션은 일반적인 사용자 지정 구성 요소가 아닙니다. 이 사용자 지정 구성 요소는 일반 CollectionInput 클래스 대신 CollectRadioButtonsInput에서 상속받습니다. 나는 2 가지 관련 방법을 수정했다. app/inputs/radio_buttons_left_label_input.rb
class RadioButtonsLeftLabelInput < SimpleForm::Inputs::CollectionRadioButtonsInput
def input
label_method, value_method = detect_collection_methods
@builder.send("collection_radio_buttons",
attribute_name, collection, value_method, label_method,
input_options, input_html_options, &collection_block_for_nested_boolean_style
)
end
protected
def build_nested_boolean_style_item_tag(collection_builder)
collection_builder.text.html_safe + collection_builder.radio_button.html_safe
end
end
내부
는 그것은 당신이 그것을 생산하는 HTML이 잘못된 것을 확인 했이
<%= form.input :gender,
:as => :radio_buttons_left_label,
:collection => %w[Female Male]
%>
처럼 사용할 수 있습니다? 왜냐하면 그것은 나에게 스타일링 문제처럼 보였습니다. – Gerry
'gender' 변수/메소드의 내용은 무엇입니까? 배열입니까? –