Я использую простой элемент ajax для частичного просмотра в представлении, чтобы пользователь мог переключать сообщение как прочитанное или непрочитанное. Когда я переключаюсь, я получаю сбой.Форма AJAX не проходит через params [: id]
MessageController # show не удалось найти MessageCopy без ID.
Применение трассировки: messages_controller.rb: 21 в «шоу» (первая линия действия)
show.html.erb
<%= render :partial => "read_unread_buttons" %>
# read_unread_buttons partial
<div id="read_buttons" class="ajaxButtonText">
<% if @message.read == true %>
<%= link_to "Mark Unread",
{:url => {:action => "read_unread_toggle", :id => @message.id},
:update => {:success => "read_buttons", :failure => "Error"}},
{:class=>"messageButton", :id => "markUnread"}, :remote => true %>
<% else %>
<%= link_to "Mark as Read",
{:url => {:action => "read_unread_toggle", :id => @message.id},
:update => {:success => "read_buttons", :failure => "Error"}},
{:class=>"messageButton", :id=>"markUnread"}, :remote => true %>
<% end %>
</div>
# messages controller
def show
@message = current_user.received_messages.find(params[:id])
@message.read = true
@message.save(:validate => false)
render :layout => "messages"
end
def read_unread_toggle
@message = current_user.received_messages.find(params[:id])
@message.read = [email protected]
@message.save(:validate => false)
render :partial => "read_unread_buttons", :locals => {:message => @message, :id => params[:id] }, :layout => false
end
Не должны ли ваши ссылки ajax отправлять запросы в действие «read_unread_toggle», а не действие show? Можете ли вы показать свои маршруты для контроллера сообщений? – Jeremy
Привет, Джереми: match 'messages/read_unread_toggle' и матч 'messages/show'. – sscirrus