我正在创建各种消息系统。它是Rails 4中更大的整体系统的一部分。 无论如何,为了简单地设置我的问题,我有可以发送和接收消息的用户。所以在我的“新”用户视图中,我在创建新消息时向消息控制器发送参数[:receiver_id]。
我的问题是如何正确地将@send_to变量放到create动作中。我必须通过用户视图中的receiver_id将其发送到消息@ new action。我是以某种方式将其存储为消息参数还是将其设为隐藏参数?
这是我的消息控制器
class MessagesController < ApplicationController
def new
@message = Message.new
#this :receiver_id is being sent from the show view in the user controller / view
#it is being used to pass a parameter
@send_to = User.find(params[:receiver_id])
@message.sender = current_user
@message.receiver = @send_to
#the form_for should save the message with the RESTful action of create method in this controller
end
def create
debugger
@messasge = Message.create!(message_params)
redirect_to users_path
end
def index
@messages = current_user.messages
end
def sent
@messages = current_user.messages
end
def message_params
params.require(:message).permit!
end
end
我从rails路由中了解到主要是关于RESTful操作,是的,我在写这篇文章之前再次阅读了路由指南。
我已将这两行移到create函数中。 @send_to需要:receiver_id。
@message.sender = current_user
@message.receiver = @send_to
答案 0 :(得分:1)
messages#create
动作。我假设用户在完成表单数据时可以选择某种方式的邮件收件人。new
不需要知道谁是消息接收者。Message.create!
(使用!
),因为如果创建失败,它将引发异常。如果失败,请使用save
并处理案例e.g:
def create
@message = Message.new params[:message]
@message.save
respond_to do |f|
f.json do
render :json => {:success => @message.persisted?, :message => @message}.to_json
end
end
end