基本上,我将我的消息收件箱(使用mailboxer gem)安排在一个可折叠的手风琴中(使用twitter bootstrap)。每当用户单击对话时,它就会展开并显示所有消息。我想要它,这样当用户点击对话时,它也会将对话标记为已读。
我按照这里的说明尝试做我想做的事:How to call a rails method from in jQuery
我基本上试图通过在其中放置一个id然后运行一个jquery脚本来引用“a data-toggle = ......”,每当我点击“a data-toggle=....." 和 "/a" 标签(stakoverflow 不会让我胡萝卜 a's..)
虽然它不起作用....请帮忙,过去一天我一直在尝试解决这个问题....我在 Rails 上也比较新。
_conversation.html.erb(当我运行 mailbox.inbox 时,Mailboxer 使用它来呈现每个对话)
<div class="panel panel-default" >
<div class="panel-heading">
<h3 class="panel-title">
<a data-toggle="collapse" data-parent="#accordion" href= "#collapse_<%= conversation.id %>" id= "click_<%= conversation.id %>">
<strong><%= conversation.subject %> </strong>
</a>
</h3>
</div>
<div id="collapse_<%= conversation.id %>" class="panel-collapse collapsing">
<div class="panel-body">
<%= content_tag_for(:ul, conversation.receipts_for(current_user)) do |receipt| %>
<% message = receipt.message %>
<% t = message.updated_at.localtime %>
<div class="row">
<div class="col-md-7"><strong><%= message.sender.first_name %>: </strong><%= message.body %></div>
<div class="col-md-5">Sent <%= t.strftime("%a, %m/%e/%Y %I:%M %p") %></div>
</div>
<% end %>
<%= render 'messages/form', conversation: conversation %>
</div>
</div>
</div>
我在这个文件的底部运行这个脚本
<script>$("#click_<%= conversation.id %>").click(function() {$.ajax("/conversations/render_read")});</script>
我的对话控制器在公共部分
def render_read
conversation.mark_as_read(current_user)
end
我的 routes.rb 有
resources :conversations, only: [:index, :show, :new, :create] do
member do
post :reply
post :trash
post :untrash
get :render_read
end
end