RoR - изображение со ссылкой, ошибка, показывающая идентификатор в url-for, но не в image_tag?
У меня есть следующий код в частичной:
<%= image_tag(url_for(:controller => "campaigns", :action=>'coupon_preview_text',
:id => campaign_id, :width=>width), {
:title=>@campaign_name,
:onclick=>"showBigCouponPreview(" + campaign_id.to_s + ")",
:alt => @campaign_name }) %>
Это работает на 100% нормально, когда у меня есть рельсы с обычным действием, например, я получаю
<img title="Click for Largest image"
src="/campaigns/coupon_preview_text/1075?width=120"
onclick="showBigCouponPreview(1075)"
alt="Click for Largest image">
но когда я использую тот же частичный (который имеет image_tag) через ajax-вызов (для той же записи), который использовал rjs для page.replace_html частичный, который я получаю
<img title="Click for Largest image"
src="/campaigns/coupon_preview_text/1075?width=120"
onclick="showBigCouponPreview(#<Campaign:0x7fe795a32210>)"
alt="Click for Largest image">
т.е. идентификатор записи - 1075 - показывает нормально в атрибуте src, но не в действии onlick??? По какой-то причине я не знаю, когда вызов ajax использует rjs для замены этого частичного, он, кажется, ведет себя по-разному для одной и той же записи.
Очевидно, что существует какая-то проблема с получением и отображением идентификатора записей, в отличие от его внутреннего идентификатора объекта для части, нажатой на кнопку.
1 ответ
Где бы вы ни находились campaign_id
в вашем вызове ajax, вы должны установить его на свой фактический Campaign
объект, а не идентификатор объекта. Причина, по которой это работает для :id
параметр, потому что Rails знает, как использовать идентификатор объекта, тогда как .to_s
не делает.