![](/img/trans.png)
[英]How can I make a counter variable in jQuery that changes the images when the user clicks on the right and and left arrow buttons?
[英]How can I pass a variable to a partial that is loaded when user clicks on a div?
我正在嘗試在用戶單擊div元素時加載部分內容。 我的問題是我想將變量傳遞給此局部變量,而我找不到方法。
我寫了以下代碼:
<script>
$(".conversation").click(function() {
<% @conversationId = capture do %>
<%= javascript_tag "$(this).attr('id');" %>
<% end %>
$("#conversation").html("<%= escape_javascript(render(:partial => 'conversations/conversation_home', :locals =>{:conversation => Conversation.find_by_id(@conversationId)} )) %>");
});
</script>
我正在嘗試初始化varialbe(@conversationId),然后使用它將我想要的對象傳遞給局部對象。 當我加載頁面時,它也會嘗試加載部分頁面(為什么?我沒有單擊任何地方),並且由於對話為nil,所以我得到了“ nil:NilClass的未定義方法'subject'”。 如果我將@conversationId替換為值,則會正確初始化對話。
為什么在加載頁面時而不是在單擊div之后呈現部分視圖? 我可以正確初始化@conversationId嗎?
我可以采取另一種方法嗎?
頁面加載時, <%
和%>
之間的所有內容都會得到評估。 多數民眾贊成在預期的行為,這就是為什么您的部分頁面加載時加載。
使用AJAX
我會親自使用AJAX。 這就是我要做的。
在HTML中 (為每個具有id
會話添加div)
<div class="conversation" data-conversation-url="<%= conversation_path(:id => 1) %>">Get Conversation</div>
用Javascript (我將其放在單獨的文件中)
$(document).on('click', '.conversation', function() {
$.get({
url: $(this).data('conversation-url'),
success: function() {
// do something here
},
failure: function() {
// do something here
}
});
});
在對話中
def show
@conversation = Conversation.find(params[:id])
end
在views / conversations / show.js.erb中
$("#conversation").html("<%= escape_javascript(render(:partial => 'conversation_home', :locals =>{:conversation => @conversation} )) %>");
這應該可以解決問題。
請注意,這是假設您已經為conversation_path
設置了路由。 另外,這只是一個示例代碼。 您將不得不對其進行修改以滿足您的需求,添加錯誤處理,並且可能會根據所使用的jQuery和Rails的版本來更改某些代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.