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(#&lt;Campaign:0x7fe795a32210&gt;)" 
alt="Click for Largest image">

т.е. идентификатор записи - 1075 - показывает нормально в атрибуте src, но не в действии onlick??? По какой-то причине я не знаю, когда вызов ajax использует rjs для замены этого частичного, он, кажется, ведет себя по-разному для одной и той же записи.

Очевидно, что существует какая-то проблема с получением и отображением идентификатора записей, в отличие от его внутреннего идентификатора объекта для части, нажатой на кнопку.

1 ответ

Решение

Где бы вы ни находились campaign_id в вашем вызове ajax, вы должны установить его на свой фактический Campaign объект, а не идентификатор объекта. Причина, по которой это работает для :id параметр, потому что Rails знает, как использовать идентификатор объекта, тогда как .to_s не делает.

Другие вопросы по тегам