По сути, у меня есть входящие сообщения (с использованием драгоценного камня mailboxer), расположенные в складном аккордеоне (с использованием twitter bootstrap). Всякий раз, когда пользователь нажимает на диалог, он разворачивается и показывает все сообщения. Я хочу, чтобы, когда пользователь нажимает на беседу, он также помечал беседу как прочитанную.
Я следовал инструкциям здесь, чтобы попытаться сделать то, что я хочу: Как вызвать метод rails из jQuery
В основном я пытался сослаться на "a data-toggle=...", поместив туда идентификатор, а затем запустив скрипт jquery, который получает путь render_read, который я создал в своем контроллере, всякий раз, когда я щелкаю что-то между "a data-toggle=....." и теги "/a" (stakoverflow не позволит мне морковить a's..)
Однако это не работает... пожалуйста, помогите, я пытался решить эту проблему в течение последнего дня.... Я также относительно новичок в рельсах.
_conversation.html.erb (Mailboxer использует это для отображения каждой беседы, когда я запускаю mailbox.inbox)
<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
Мои маршруты.rb есть
resources :conversations, only: [:index, :show, :new, :create] do
member do
post :reply
post :trash
post :untrash
get :render_read
end
end