2013-08-25 71 views
0

我有一個測試應用程序,允許用戶創建帖子,然後其他用戶可以評論這些帖子。我現在正在嘗試創建一種方法讓用戶從帖子中向另一個用戶發送消息,但是我遇到了表單的問題。當用戶B想要在用戶A的帖子中填寫用戶A時,我希望郵件的表單具有預填的數據。即。Rails渲染vs re_direct與表格

要:@ user.username 來自:@ current_user.username

由於消息是他們自己的模型和控制器我似乎無法re_direct用戶,仍然保持用戶的具體信息。

+0

你可能想看看[作爲可消息的寶石](https://github.com/shannonwells/acts_as_messagable)。 –

+0

檢查一下,我會告訴你它是怎麼回事。 – niharvey

回答

0

難道你不能只在表單上顯示錶單嗎?然後將表單值傳遞給您的消息創建操作?

./app/controllers/message_controller.rb

class MessageController < ApplicationController 
    def create 
    @message = Message.create(create_message_params) 
    @message.send 
    end 

    private 
    def create_message_params 
    {}.tap do |h| 
     h[:from_user_id] = params[:from_user_id] 
     h[:to_user_id] = params[:to_user_id] 
     h[:text]   = params[:text] 
    end 
    end 
end 

./app/controllers/post_controller.rb

class PostController < ApplicationController 
    def show 
    @post = Post.find(params[:id]) 
    @message = Message.new 
    end 
end 

./app/views/posts/show.html.erb

<!-- omitting other post show html, showing just the message form --> 
<% form_for(@message, url: messages_path do |f| %> 
    <%= hidden_field_tag(:to_user_id, @post.author.id) %> 
    <%= text_area_tag(:text, @message.text) %> 
    <br/> 
    <%= f.submit("Send Message") %> 
<% end %> 

編輯2013.08.25從評論,希望是爲消息在不同的觀點

首先你必須在郵政的「秀」視圖鏈接:

<%= link_to "Send a message", new_messages_path(to_user_id: @post.author.id) %> 

然後,你必須創建新的動作,和一個視圖,這需要在傳入to_user_id,和也許將它存儲在隱藏的領域。然後,當他們通過提交該消息形式發佈到message_path時,您將擁有to_user_id以及與current_user.id結合的消息。

這有道理嗎?

+0

真的很深思熟慮。不過,我真的希望它成爲一個單獨的頁面,而不是它在帖子頁面上。 – niharvey

+0

這是一個微不足道的變化,正如我在我的答案底部的編輯中提到的那樣。合理? – Carl

+0

夥計,真棒!相信與否我早些時候嘗試過link_to方法,但它不起作用,現在我明白了爲什麼。謝謝! – niharvey