2013-06-25 68 views
-1

我已閱讀關於此主題的其他線索,但它們似乎不適用於我,因此,如果我只是對這個主題感到頭疼,我會事先道歉。在Javascript調用中嵌入Ruby代碼

我有一個Rails視圖,它顯示一個700x200大圖像(我們稱之爲幻燈片)。在這張大圖片下,我有幾張縮略圖顯示。當我點擊縮略圖時,我想讓縮略圖的大圖像出現在縮略圖上方的大圖像中。

我使用Rails 3.2和PaperClip作爲圖像。

我的視圖代碼:

<div id="slider"> 
    <%= image_tag @first_image.image.url(:full) %> 
</div> 
<% @slides.each do |s| %> 
    <div id="slider_tn"> 
    <ul> 
     <li><%= s.id %> <%= image_tag s.image.url(:thumb), {:onclick =>"$('#slider').html("+image_tag.url(:full)+")"} %></li> 
     <li>Title: <%= s.title %></li> 
     <li>URL: <%= s.url %></li> 
     <li><%= link_to("Edit", action: "edit", id: s.id) %></li> 
    </ul> 
    </div> 
<% end %> 

裏面的:的onclick部分就是我在遇到麻煩。我得到一個「錯誤數量的參數(0 1..2)我嘗試紅寶石添加標籤:

<%= s.id %> <%= image_tag s.image.url(:thumb), {:onclick =>"$('#slider').html("+<%= image_tag.url(:full) %>+")"} %> 

...但是這讓我的錯誤:意外‘<’,我的理解 我試圖將image_tag.url(:full)分配給javascript var,如其他帖子所示,並使用它,但這對我也不起作用。得到這個工作。

非常感謝您的任何幫助/提示

回答

0

Y您無法在標籤內打開標籤。你想要的是從已經在標籤中定義的字符串轉義Ruby代碼。使用 #{}。

<%= image_tag s.image.url(:thumb), {:onclick =>"$('#slider').html(#{image_tag.url(:full)})"} %> 

http://en.wikibooks.org/wiki/Ruby_Programming/Syntax/Literals#Interpolation

+0

Hallucynogenyc:謝謝。我試過了:{:onclick =>「$('#slider')。html(#{image_tag.url(:full)})」}和{:onclick =>「$('#slider')。html (「+#{image_tag.url(:full)})+」},但都不起作用。你能更具體一些嗎?謝謝, –

+0

我沒有測試過我的代碼,但它應該可以工作。一個標籤內的標籤,這就是爲什麼你得到意想不到的'<'。如果你需要在一個字符串中嵌入紅寶石代碼,使用插值。 – bluehallu

0

我猜你應該使用image_tag s.image.url(:full)而不是image_tag.url(:full)

<%= image_tag s.image.url(:thumb), {:onclick => "$('#slider').html(#{image_tag s.image.url(:full)})"} %>