new.html.erbのRails:理解カスタムフォームヘルパー
<%= form_for @star do |f|%>
<%= star_radio(f, true)%>
<% end %>
stars_helper.rb
module StarHelper
def star_radio(form, status)
form.label "star_#{status}", class: 'radio-inline' do
form.radio_button(:star, status) + i18n_star(status)
end
end
def i18n_star (status)
I18n.t("activerecord.attributes.star.is_sun.#{status}")
end
end
私は、上記のようなコードの一部を見ました。
私はカスタムフォームヘルパーに慣れていません。
ブロック内にform.radio_button(:star, status) + i18n_star(status)
を使用する理由と、ラジオボタンにテキストを追加するために「+」を使用できる理由を教えてください。
私がこれを学ぶためにどこに行くことができるか教えていただければ幸いです。
感謝を。初心者では、ほとんどの場合、私は '<%= f.label:attr%><%= f.radio_button:attr%>'のようにヘルパーを作成しますが、ここで 'form.label 'のようなブロックを使用しています。 }、class: 'radio-inline' do form.radio_button(:star、status)+ i18n_star(status) end'です。私はこれで混乱しています –
はい、ブロックのコードをフォームのラベルメソッドに渡すことができます。メソッド定義 'def label(object_name、method、content_or_options = nil、options = nil、&block)の最後のパラメータ'&block' 'https://github.com/casunlight/rails/blob/master/actionview/lib/action_view/helpers /form_helper.rb#L750 –
多くのおかげで、あなたは理解しやすくなりました。 –