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

发布于 2024-12-25 02:51:26 字数 1061 浏览 1 评论 0原文

我在部分中有以下代码:

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

当我有一个常规的 Rails 操作显示它时,它工作 100% 正常,例如,我得到了

<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)存在某种问题。

I have the following code in a partial:

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

It's working 100% ok when I have a regular rails action display it, e.g. I get

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

but when I am using the same partial (that has the image_tag) through an ajax call (for the same record) that used rjs to page.replace_html the partial I am getting

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

i.e. the record id - 1075 - shows ok in the src attribute but not in the onlick action ???
For some reason that I don't know when the ajax call use rjs to replace that partial it seems to behave differently for the same record.

Clearly there is some sort of issue about getting and showing the records ID as opposed to its internal object ID for the on-click part.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

单身狗的梦 2025-01-01 02:51:26

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

Wherever you're setting campaign_id in your ajax call, you must be setting it to your actual Campaign object rather than the object's ID. The reason it works for the :id parameter is because Rails knows to use the object's ID, whereas .to_s doesn't.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文