2012-01-06 6 views
0

私は部分的に次のコードを持っている:私は、通常のレール動作表示にそれを持っているとき、それは、例えば、100%OK働いてRoR - リンク付きの画像ですが、URL内のIDは表示されていますが、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 }) %> 

を私は

<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"> 
を取得しています部分をpage.replace_htmlするRJSを使用(同じレコード用)のAJAX呼び出して(つまりIMAGE_TAGを持っている)と同じ部分を使用していたとき、私は

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

を取得しますが、

つまりレコードID - 1075 - はsrc属性ではOKですが、onlickアクションでは表示されません??? 何故か、私は、ajax呼び出しがその部分を置き換えるためにrjsを使っていつ同じレコードに対して異なった振る舞いをするかわかりません。

オンクリック部分の内部オブジェクトIDではなく、レコードIDを取得して表示することに問題があることは明らかです。

+0

整数ではなく、あなたには「キャンペーン」のインスタンスがあります。これらのビューは同じアクションですか? RJSテンプレートを表示してください。おそらくあなたは誤って入力し、 'campaign.id'ではなく':locals'に 'campaign'を渡します。 –

答えて

1

あなたのajaxコールでcampaign_idを設定している場合は、オブジェクトのIDではなく実際のCampaignオブジェクトに設定する必要があります。 :idパラメータで動作する理由は、RailsがオブジェクトのIDを使用することを認識しているのに対し、.to_sはそうではないからです。

+0

はい、そのように見えますが、なぜ同じ属性 - campaign_id - は 'src'属性で動作しますが、オブジェクトIDを取得する 'onlickアクション'では動作しません。これは同じ変数名 –

+0

と呼ばれています。非Ajaxメソッドで設定すると、実際にはオブジェクトではなくidに設定されている可能性があります。あなたのAjaxメソッドのコード/ rjsテンプレートを投稿すれば、より多くの情報を得ることができます。 –

+0

私はそれを見つけました(ディランからのこのヒントのおかげで)。確かに、私はこの部分を呼び出す1つの場所にIDを使用しています。アクティブレコードオブジェクトを使用している別の場所では、アクティブレコードを使用していたものの末尾に.map(&:id)を追加することでこれを修正できました。両方の発信者が同じもの(IDだけ)を使用しています! –

関連する問題