从link_to渲染消息而不更改页面“ajax”

时间:2017-03-15 16:10:52

标签: javascript jquery html ruby-on-rails ajax

我目前有一个基本的消息传递系统。在某些页面上有一个发送消息按钮。我想要一个弹出窗口,并准备好输入消息。我使用了本教程:messaging system

  • 单击消息链接时,路径指向会话控制器create,以便创建会话,然后重定向到消息,以便他们键入消息..这全部重定向到另一个页面名为message.html.erb

  • Iv试图制作这个弹出窗口,但我似乎无法弄清楚如何通过会话控制器而不会在创建后重定向到message页面。我只是希望用户点击按钮,然后就可以输入消息了。

会话

class ConversationsController < ApplicationController
 before_action :authenticate_user!

def index
 @users = User.all
 @conversations = Conversation.all
 end

def create
 if Conversation.between(params[:sender_id],params[:recipient_id])
   .present?
    @conversation = Conversation.between(params[:sender_id],
     params[:recipient_id]).first
 else
  @conversation = Conversation.create!(conversation_params)
 end
 puts "convo created !!!!!!!!!!!!!!!!!!!!!!!!!!!! path here needs to show up after click in partial"
 redirect_to conversation_messages_path(@conversation)

end

private
 def conversation_params
  params.permit(:sender_id, :recipient_id)
 end

end

讯息:

class MessagesController < ApplicationController
  before_action do
   @conversation = Conversation.find(params[:conversation_id])
  end

def index
  respond_to do |format|
    format.js

 @messages = @conversation.messages
  if @messages.length > 10
   @over_ten = true
   @messages = @messages[-10..-1]
  end
  if params[:m]
   @over_ten = false
   @messages = @conversation.messages
  end
 if @messages.last
  if @messages.last.user_id != current_user.id
   @messages.last.read = true;
  end
 end
@message = @conversation.messages.new




  end 


 end

def new
 @message = @conversation.messages.new
end

def create
 @message = @conversation.messages.new(message_params)
 if @message.save
  redirect_to conversation_messages_path(@conversation)
 end
end

private
 def message_params
  params.require(:message).permit(:body, :user_id)
 end
end

我不想重定向的主页我希望留在此页面。

<%= link_to conversations_path(sender_id: current_user.id, recipient_id: reservation.user.id), method: 'post', :remote => true do %>
     <i class="fa fa-envelope" aria-hidden="true"></i>
<% end %>

我创建了一个名为messagesconversations的文件夹,其中包含_message.html.erb_conversation.html.erb

  • 可能的解决方案是在点击后在后台运行这些吗?如果是这样我怎么办?我只是不确定我用这个方法做什么,因为它需要首先通过conversations_controller找到对话,然后控制器中的重定向发生..有没有办法偏袒部分或什么?

  • 如果您有其他方式可以这样做,那么请或需要更多信息!我很快就需要做到这一点很重要,谢谢! ^^

0 个答案:

没有答案