我有一個測試應用程序,允許用戶創建帖子,然後其他用戶可以評論這些帖子。我現在正在嘗試創建一種方法讓用戶從帖子中向另一個用戶發送消息,但是我遇到了表單的問題。當用戶B想要在用戶A的帖子中填寫用戶A時,我希望郵件的表單具有預填的數據。即。Rails渲染vs re_direct與表格
要:@ user.username 來自:@ current_user.username
由於消息是他們自己的模型和控制器我似乎無法re_direct用戶,仍然保持用戶的具體信息。
我有一個測試應用程序,允許用戶創建帖子,然後其他用戶可以評論這些帖子。我現在正在嘗試創建一種方法讓用戶從帖子中向另一個用戶發送消息,但是我遇到了表單的問題。當用戶B想要在用戶A的帖子中填寫用戶A時,我希望郵件的表單具有預填的數據。即。Rails渲染vs re_direct與表格
要:@ user.username 來自:@ current_user.username
由於消息是他們自己的模型和控制器我似乎無法re_direct用戶,仍然保持用戶的具體信息。
難道你不能只在表單上顯示錶單嗎?然後將表單值傳遞給您的消息創建操作?
./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結合的消息。
這有道理嗎?
你可能想看看[作爲可消息的寶石](https://github.com/shannonwells/acts_as_messagable)。 –
檢查一下,我會告訴你它是怎麼回事。 – niharvey