これは簡単だと思いますが、まだ理解していません...
ユーザーにクリックしてもらいたい大きなdivがあり、クリックしたモデルが送信されます(SOのように、質問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 がクリックされたときに適切な URL を取得します。
これをjqueryで変更したい(別ファイル)
question.js.erb:
$(function() {
$([id^="question-"]).bind("click", function() {
window.location = <%= question_path(question) %>
});
});
それがまさに私の問題です.JSファイルは、ループ内question
の変数であるため、何が何であるかを知りません。each
JS に情報を渡して正しいパスを生成する方法はありますか?
Rahul garg のアドバイスで実装された解決策は、html5 の data- 属性を作成することです。
<div id="question-<%= question.id%>" data-questionurl= '<%= question_path(question) %>'>
そしてjsで
window.location = this.getAttribute("data-questionurl");
このソリューションが良いコーディングの実践になることを願っています