如何在 Simple_Form collection_radio_buttons 上使用集合的其他方法?
How to user other methods of the collection on a Simple_Form collection_radio_buttons?
我在 Rails Ruby 的 simple_form 表单上有一个 collection_radio_buttons。
代码:
<%= f.collection_radio_buttons :player_out, @lineup.lineup_players.starting_players, :id, :name, label: "Player to get out?",
collection_wrapper_tag: :fieldset, collection_wrapper_class: "form-group radio_buttons optional substitution_suggestion_player_out",
item_wrapper_tag: :div, item_wrapper_class: "form-check" do |player| %>
<%= player.radio_button %>
<%= player.label { tag.div(player.text) } %>
<% end %>
我有两个问题:
1 - 我的标签 ("label: 'Player to get out?'") 不工作。我做错了什么?
2 - 如何调用集合的其他方法?比如获取玩家的头像。 :
<%= player.label { tag.div(image_tag(player.avatar) player.text) } %>
提前致谢。
大卫
如果你想用单选按钮显示图像,你可以这样做,
<%= f.collection_radio_buttons :player_out, @lineup.lineup_players.starting_players, :id, :name do |player| %>
<%= player.radio_button %>
<%= player.label do %>
<%= player.text %>
<%= image_tag player.avatar, height: '100px', width: '100px' %>
<% end %>
<% end %>
除此之外,通过单独创建元素,您可以轻松地向它们应用 class。
为了将 html 代码推送到 collection_radio_buttons 的标签块,我最终创建了一个模型方法,return 我想使用 html,并将该方法用作集合的文本方法。
在我的模型中:
def html_to_radio_button
html = ""
html << "<a class='avatar rounded-circle mr-3' style='background:none !important;'>"
html << "<img alt='Image placeholder' src='#{ApplicationController.helpers.url_for_player_avatar(self.player)}'>"
html << "</a>"
html << "<div class='media-body'>"
html << "<span class='mb-0 text-sm'>#{self.name}</span><br>"
html << "<small class='text-muted'>#{self.player.position}</small>"
html << "</div>"
html.html_safe
end
在表格上:
<%= f.collection_radio_buttons :player_out,lineup.lineup_players.starting_players, :id, :html_to_radio_button, collection_wrapper_tag: :fieldset, collection_wrapper_class: "form-group radio_buttons optional substitution_suggestion_player_out", item_wrapper_tag: :div, item_wrapper_class: "form-check" , label: 'Quem Sai?' do |player| %>
<%= player.radio_button(class: "form-check-input radio_buttons optional") %>
<%= player.label(class: "collection_radio_buttons", style: "cursor: pointer;") {content_tag(:div, player.text, class: "media align-items-center")} %>
<% end %>
我在 Rails Ruby 的 simple_form 表单上有一个 collection_radio_buttons。
代码:
<%= f.collection_radio_buttons :player_out, @lineup.lineup_players.starting_players, :id, :name, label: "Player to get out?",
collection_wrapper_tag: :fieldset, collection_wrapper_class: "form-group radio_buttons optional substitution_suggestion_player_out",
item_wrapper_tag: :div, item_wrapper_class: "form-check" do |player| %>
<%= player.radio_button %>
<%= player.label { tag.div(player.text) } %>
<% end %>
我有两个问题:
1 - 我的标签 ("label: 'Player to get out?'") 不工作。我做错了什么?
2 - 如何调用集合的其他方法?比如获取玩家的头像。 :
<%= player.label { tag.div(image_tag(player.avatar) player.text) } %>
提前致谢。
大卫
如果你想用单选按钮显示图像,你可以这样做,
<%= f.collection_radio_buttons :player_out, @lineup.lineup_players.starting_players, :id, :name do |player| %>
<%= player.radio_button %>
<%= player.label do %>
<%= player.text %>
<%= image_tag player.avatar, height: '100px', width: '100px' %>
<% end %>
<% end %>
除此之外,通过单独创建元素,您可以轻松地向它们应用 class。
为了将 html 代码推送到 collection_radio_buttons 的标签块,我最终创建了一个模型方法,return 我想使用 html,并将该方法用作集合的文本方法。
在我的模型中:
def html_to_radio_button
html = ""
html << "<a class='avatar rounded-circle mr-3' style='background:none !important;'>"
html << "<img alt='Image placeholder' src='#{ApplicationController.helpers.url_for_player_avatar(self.player)}'>"
html << "</a>"
html << "<div class='media-body'>"
html << "<span class='mb-0 text-sm'>#{self.name}</span><br>"
html << "<small class='text-muted'>#{self.player.position}</small>"
html << "</div>"
html.html_safe
end
在表格上:
<%= f.collection_radio_buttons :player_out,lineup.lineup_players.starting_players, :id, :html_to_radio_button, collection_wrapper_tag: :fieldset, collection_wrapper_class: "form-group radio_buttons optional substitution_suggestion_player_out", item_wrapper_tag: :div, item_wrapper_class: "form-check" , label: 'Quem Sai?' do |player| %>
<%= player.radio_button(class: "form-check-input radio_buttons optional") %>
<%= player.label(class: "collection_radio_buttons", style: "cursor: pointer;") {content_tag(:div, player.text, class: "media align-items-center")} %>
<% end %>