3

ヘルパー collection_radio_buttons を使用して画像をラベルとして表示しようとしていますが、image_id をモデルに保存して URL を取得できるようにしたいと考えています。これまでのところ、ラジオ ボタンと image_url をラベル。

私がすでに気づいたことは、ラジオ ボタンを 1 回しかクリックできず、オンの状態のままであるということです。

<%= 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 でラップできますか?

編集

したがって、さらに調査してこれをつなぎ合わせようとした後、画像とラジオボタンをレンダリングできるようになりましたが、画像は、サイズを変更した :small バージョンではなく、carrierwave でアップロードしたデフォルトの画像です。: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>

ありがとう

4

1 に答える 1

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
于 2014-07-04T21:11:27.033 に答える