2016-02-26 60 views
0

我想在用戶點擊一個特定的元素時生成一個select_tag。我有這個JS在我的網頁:JS代碼裏面的Ruby插值

$(document).ready(function(){ 
    $("#add_hotel").click(function(){ 
     $(".new_hotels").append('<%=select_tag "dash_select", options_for_select(session[:user_hotel_list].collect{ |hotel| [hotel["name"], hotel["id"]] }) %>'); 
    }) 
    }) 

生成的代碼如下所示:

<script> 
    $(document).ready(function(){ 
    $("#add_hotel").click(function(){ 
     $(".new_hotels").append('<select name="dash_select" id="dash_select"> 
<option value="31">Plaze</option> 
<option value="30">dndjd</option></select>'); 
    }) 
    }) 

    </script> 

,但我得到未捕獲的SyntaxError:意外的標記是非法的。

---編輯---

有錯誤的行是這一個:

$(".new_hotels").append('<select name="dash_select" id="dash_select"><option value="31">Plaze</option> 
<option value="30">dndjd</option></select>'); 

---編輯---

這裏的圖片確切的線我在控制檯中得到錯誤enter image description here

我注意到當session[:user_hotel_list]中只有一個元素時,代碼工作正常。 正如所建議,它可能是一個特殊的隱藏字符和複製粘貼問題相關的問題,但我試圖逐字寫代碼,我仍然得到這個錯誤...

+0

你可以提供哪一行錯誤被調用,也建議養成關閉你的函數的習慣。 –

+0

@JulianGuterman剛剛添加了 –

+0

嗯,JS看起來很好,乍一看。應該有效。 –

回答

0

您可以創建一個名爲your_js_file.js.erb的文件。然後你就可以在裏面使用Rails標籤。

+0

是的,但這不會解決我的錯誤 –

0

爲什麼不把你的插值首先存儲在一個變量中,然後把它追加?它看起來像你插值生成的代碼確實工作,如果它全部在一行。我在檢查員中運行它,如果它全部在一行中,它運行良好。無論如何嘗試。希望能幫助到你。

 $(document).ready(function(){ 
     $("#add_hotel").click(function(){ 
      var hotels = <%=select_tag "dash_select", options_for_select([["all hotels", "all"]]+ session[:user_hotel_list].collect{ |hotel| [hotel["name"], hotel["id"]] }) %> 
      $(".new_hotels").append(hotels); 
     }) 
     }) 
+0

你的伎倆不工作。如果'''session [:user_hotel_list'''中只有一個元素,代碼實際上可以工作,但只要有兩個元素,我就會返回錯誤 –