2012-01-06 46 views
0

我有一個局部以下代碼:RoR - 帶鏈接的圖片,錯誤信息顯示url-for中的ID,但沒有顯示image_tag中的ID?

<%= 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"> 

,但是當我通過一個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屬性中顯示ok,但不在onlick動作中顯示??? 出於某種原因,我不知道何時ajax調用使用rjs來替換該部分它似乎行爲不同的相同的記錄。

很顯然,存在某些與獲取並顯示記錄標識相關的問題,而不是其點擊部分的內部對象標識。

+0

好像不是整數,你有'Campaign'的實例。這些觀點是否適用於同一行動?向我們展示您的RJS模板。也許你輸錯了那裏,並將'campaign'傳遞給':locals'而不是'campaign.id'。 – 2012-01-06 20:14:37

回答

1

無論您在ajax調用中設置campaign_id,都必須將其設置爲實際的Campaign對象而不是對象的ID。它適用於:id參數的原因是因爲Rails知道使用該對象的ID,而.to_s則不知道。

+0

是的,它看起來像 - 但爲什麼相同的屬性 - campaign_id - 工作在'src'屬性中,而不是'onlick action'中的對象ID。它被稱爲相同的變量名稱 – 2012-01-06 20:16:47

+0

因爲當您將它設置爲非ajax方法時,可能實際上將它設置爲id,而不是對象。發佈你的ajax方法的代碼/ rjs模板,我可以給你更多的信息。 – 2012-01-06 20:17:25

+0

我找到了(感謝來自Dylan的這個提示)。事實上,我在一個地方使用ID來調用這個部分,而在另一個地方我使用的是Active Record對象,我可以通過將.map(&:id)添加到正在使用Active Record的結尾來解決此問題,現在這兩個呼叫者正在使用相同的東西(只是ID)它的工作原理! – 2012-01-06 21:04:48