将图像用于单选按钮标签导轨4

Ric*_*wis 3 ruby forms radio-button ruby-on-rails-4 collection-select

我正在尝试使用帮助程序collection_radio_buttons将图像显示为标签,并希望将image_id保存到模型中,以便我可以检索url,到目前为止,我已经提出了一个显示单选按钮和image_url为标签

我已经注意到的是,我只能单击一次单选按钮,然后它才保持在打开状态

<%= f.collection_radio_buttons(:default_image_id, DefaultImage.all, :id, :image) %>
Run Code Online (Sandbox Code Playgroud)

生成的html看起来像这样

<input id="campaign_default_image_id_1" name="campaign[default_image_id]" type="radio" value="1" />
<label for="campaign_default_image_id_1">https://calcuttatest.s3.amazonaws.com/uploads/default_image/image/1/vandals_portfolio.png</label>
Run Code Online (Sandbox Code Playgroud)

如何正确设置?我可以将标签包裹在image_tag中吗?

任何帮助表示赞赏

编辑

因此,在经过更多谷歌搜索并将其拼凑在一起之后,我现在可以渲染图像和单选按钮,但是该图像是我通过载波上传的默认图像,而不是我想要的调整大小的小版本。我可以通过:小版本通过?

<%= f.collection_radio_buttons(:default_image_id, DefaultImage.all, :id, :image) do |b| %>
<%= b.label { image_tag("#{b.text}") + b.radio_button } %>
Run Code Online (Sandbox Code Playgroud)

b.text检索网址

https://calcuttatest.s3.amazonaws.com/uploads/default_image/image/2/ymca_portfolio.png
Run Code Online (Sandbox Code Playgroud)

但是我想用fancy_box_array为文件名加上前缀,就像这样

https://calcuttatest.s3.amazonaws.com/uploads/default_image/image/2/fancy_box_array_ymca_portfolio.png
Run Code Online (Sandbox Code Playgroud)

用此新代码生成的html是

<label for="campaign_default_image_id_1"><img alt="Vandals portfolio" src="https://calcuttatest.s3.amazonaws.com/uploads/default_image/image/1/vandals_portfolio.png" />
<input id="campaign_default_image_id_1" name="campaign[default_image_id]" type="radio" value="1" /></label>
Run Code Online (Sandbox Code Playgroud)

谢谢

nic*_*oga 6

您正在尝试做的事情有很好的参考。尝试类似:

f.collection_radio_buttons(:default_image_id, DefaultImage.all, :id, :image) do |b|
  b.label { b.radio_button + image_tag(b.object.image) }
end
Run Code Online (Sandbox Code Playgroud)