我目前有一个基本的消息传递系统。在某些页面上有一个发送消息按钮。我想要一个弹出窗口,并准备好输入消息。我使用了本教程: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 %>
我创建了一个名为messages
和conversations
的文件夹,其中包含_message.html.erb
和_conversation.html.erb
可能的解决方案是在点击后在后台运行这些吗?如果是这样我怎么办?我只是不确定我用这个方法做什么,因为它需要首先通过conversations_controller
找到对话,然后控制器中的重定向发生..有没有办法偏袒部分或什么?
如果您有其他方式可以这样做,那么请或需要更多信息!我很快就需要做到这一点很重要,谢谢! ^^