2017-02-25 78 views
0

我用的link_to添加URL参数的new.html.erb页面Rails |显示页面上显示的URL参数后创建

<%= link_to 'Message', new_personal_message_path(receiver_id: 1010) %> 

它正确地显示在URL作为

example.com/personal_messages /新?receiver_id = 1010

,我能比简单@receiver = User.find_by(id: params[:receiver_id])

引用它在我的控制器

在new.html.erb我有这种形式来创建一个新的对话:

<%= form_for @personal_message do |f| %> 
    <%= hidden_field_tag 'receiver_id', @receiver.id %> 
    <%= f.text_area :body, class: "personal_message_textarea", placeholder: "Chat with us...", :autofocus => true %> 
    <%= hidden_field_tag :conversation_id, params[:id] || session[:conversation_id] %> 
    <%= f.submit " ", placeholder: "Chat with us!", class: "personal_message_submit" %> 
<% end %> 

,它会自动将用户重定向到该页面显示该网址显示为

example.com/conversations/1

但我也希望它也显示新创建的USER_ID(我在我的控制器,自动的方法matically在URL参数,像这样创建用户帐户上创建):

example.com/conversatinos/1?user_id=23 & receiver_id = 1010

在personal_messages控制器的新方法

def new 
    redirect_to conversation_path(@conversation) and return if @conversation 
    @personal_message = PersonalMessage.new 
    @site = Site.find_by(id: cookies[:siteid]) #used to pull site description 
end 

在personal_messages控制器创建方法

def create 
    @conversation ||= Conversation.create(author_id: cookies[:user_id], 
             receiver_id: @receiver.id) 
    @personal_message = current_user.personal_messages.build(personal_message_params) 
    @personal_message.conversation_id = @conversation.id 
    @personal_message.save! 
    flash[:success] = "ok!" 
    redirect_to conversation_path(@conversation) 
    end 
+0

你从哪里得到'user_id'和'receiver_id'? – Sravan

回答

0

固定:personal_messages控制器

def create 
    @conversation ||= Conversation.create(author_id: cookies[:user_id], 
             receiver_id: @receiver.id) 
    @personal_message = current_user.personal_messages.build(personal_message_params) 
    @personal_message.conversation_id = @conversation.id 
    @personal_message.save! 
    flash[:success] = "ok!" 
    #redirect_to conversation_path(@conversation) 
    redirect_to conversation_path(@conversation, user_id: current_user.id, receiver_id: @receiver) 
    end