RoR - 带链接的图片,错误显示url-for中的ID但不在image_tag中?

时间:2012-01-06 20:11:10

标签: ruby-on-rails ruby onclick partial rjs

我在部分代码中有以下代码:

<%= 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 }) %>

当我有一个常规的轨道动作显示它时,它正常工作,例如,我得到了

<img title="Click for Largest image" 
src="/campaigns/coupon_preview_text/1075?width=120" 
onclick="showBigCouponPreview(1075)" 
alt="Click for Largest image">

但当我通过ajax调用(对于相同的记录)使用相同的部分(具有image_tag)时,使用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">

即。记录ID - 1075 - 在src属性中显示确定,但在onlick操作中没有显示??? 出于某种原因,我不知道ajax调用何时使用rjs替换该部分,它似乎对同一记录的行为有所不同。

显然,获取和显示记录ID存在某种问题,而不是点击部件的内部对象ID。

1 个答案:

答案 0 :(得分:1)

无论您在ajax调用中设置campaign_id,都必须将其设置为实际的Campaign对象而不是对象的ID。它适用于:id参数的原因是因为Rails知道使用对象的ID,而.to_s则不知道。