0

我敢肯定,這很簡單,我只是還沒有掌握它尚未...重定向在軌的jQuery

我有一個大的div,我想用戶點擊它,它會送他去它的模型,他點擊(像這樣,但一下問題的div隨時隨地將重定向到的問題)

<% @questions.each do |question| %> 
<div id="question-<%= question.id%>" > 
.... question details here ... not important to the question 
</div> 
<% end %> 

之前,現在我會用on-click="window.location = '<%= question_path(question) %>'"所以對於每一個問題,我會得到時的適當方面網址div被點擊。

我想用jQuery來改變這種(在一個單獨的文件)

question.js.erb:

$(function() { 
    $([id^="question-"]).bind("click", function() { 
     window.location = <%= question_path(question) %> 
    }); 
}); 

而這正是我的問題.. JS文件不知道什麼question是,因爲它在each循環中的變量。

有沒有辦法將信息傳遞給JS,以便我可以使用它來生成正確的路徑?

的解決方案這是實施,拉胡爾GARG的建議是,讓一個HTML5數據 - 屬性

<div id="question-<%= question.id%>" data-questionurl= '<%= question_path(question) %>'> 

,然後在js做

window.location = this.getAttribute("data-questionurl"); 

我希望這個解決方案是很好的編碼練習

回答

2

.erb文件在呈現給頁面時會被處理一次。

所有路徑的助手可用,因此只有一次,除非你犯了一個單獨的Ajax調用你不能調用從客戶端側的護欄助手(或任何其他Rails代碼)。

所以,在這種情況下,你的選擇是:

  • Store中#question DIV本身在一些attr的路徑和js函數獲取它。在JS數組/哈希
  • 存儲路徑,對其進行維護並使用適當
  • 修改你的路由有questions_path爲collection,而不是在member/question?id=5代替question/5/,在這種情況下,你可以在你的js添加查詢參數id功能你的自我和questions_path將返回你/question
+0

謝謝,我已經用我們的建議編輯與實施的解決方案的問題 –