我正在使用mailboxer gem制作电子邮件服务。 在我的索引视图中,我有几个链接将导致收件箱/草稿...像这样:
<%= link_to "Inbox", show_conversations_path, :remote => true %>
...
<div id="content">
</div>
然后是我的show_conversation js.erb
$("#content").html("<%=escape_javascript(render :partial=>"show_conversations")%>");
控制器(messages_controller)
def show_conversations
@inbox = current_user.mailbox.inbox
respond_to do |format|
format.js
end
end
还有部分视图_show_conversations.html.erb(已经过测试,通过简单的渲染,因此没有错误)。
所以我的问题是,当我点击链接时,它实际上会重定向到一个空白的标记(当它不应该,或者至少它不是我的意图,重定向,只显示内容格)。
我已经意识到它实际上渲染了它的控制器,然后是erb.js,局部视图,而且我不知道为什么再次使用控制器,但这次是HTML。
一段日志:
Started GET "/en/messages/show_conversations"4
Processing by MessagesController#show_conversations as JS
...
Rendered messages/_show_conversations.html.erb (7962.4ms)
Rendered messages/show_conversations.js.erb (23239.0ms)
Completed 200 OK in 23330ms (Views: 23237.9ms | ActiveRecord: 5.0ms)
Started GET "/en/messages/show_conversations
Processing by MessagesController#show_conversations as HTML
Completed 406 Not Acceptable in 8ms (ActiveRecord: 0.5ms)
我知道它不应该重定向,我相信它不应该两次调用控制器(而第二个就好像它是html而不是js),但我不知道我真的知道它为什么会发生,也没有通过论坛找到类似的问题
答案 0 :(得分:0)
使用以下代码检查是否有效
def show_conversations
@inbox = current_user.mailbox.inbox
respond_to do |format|
format.js { render :layout => false }
end
end
答案 1 :(得分:0)
尝试修改此行:
$("#content").html("<%=escape_javascript(render :partial=>"show_conversations")%>");
为:
$("#content").html("<%= escape_javascript(render :partial=>'show_conversations') %>");
或使其漂亮:
$("#content").html("<%= j render :partial=>'show_conversations' %>");