【问题标题】:Use an image for radio button label in Rails 4在 Rails 4 中使用图像作为单选按钮标签
【发布时间】:2014-08-26 03:28:33
【问题描述】:

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

我已经注意到的一点是,我只能单击单选按钮一次,然后它就停留在开启状态:

<%= f.collection_radio_buttons(:default_image_id, DefaultImage.all, :id, :image) %>

生成的 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>

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

编辑

因此,经过更多研究并尝试将其拼凑在一起,我现在可以渲染图像和单选按钮,但该图像是我使用 carrierwave 上传的默认图像,而不是我想要的调整大小的 :small 版本。 :small 版本可以通过吗?

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

b.text 检索 url

https://calcuttatest.s3.amazonaws.com/uploads/default_image/image/2/ymca_portfolio.png

但我希望它在文件名前加上 fancy_box_array,如下所示:

https://calcuttatest.s3.amazonaws.com/uploads/default_image/image/2/fancy_box_array_ymca_portfolio.png

用这个新代码生成的 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>

谢谢

【问题讨论】:

    标签: ruby forms ruby-on-rails-4 radio-button collection-select


    【解决方案1】:

    有一个很好的reference 你正在尝试做的事情。尝试类似:

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

    【讨论】:

    • 啊,非常感谢,只需将 image_tag(b.object.image) 修改为 image_tag(b.object.image_url(:fancy_box_array)) ,因为使用carrierwave 来检索图像...再次感谢,大大帮助:-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-21
    • 2013-09-25
    • 2013-09-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多