我有2个控制器方法创建并显示
def create
@message2 = Message.new(params[:message])
if @message2.valid?
@message2 = current_user.sent_messages.create(params[:message])
redirect_to @message2.receiver
else
redirect_to :back
end
end
和
def show
@message = Message.find(params[:id])
if current_user==@message.receiver
@message.is_read=true
@message.save
@message2=Message.new(:receiver_id=>@message.sender, :sender_id=>current_user,:theme=>@message.theme)
else
@message2=Message.new(:receiver_id=>@message.receiver, :sender_id=>current_user,:theme=>@message.theme)
end
end
我的表格
= form_for(@message2) do |f|
%p
Content:
%br
= f.text_area :content ,:rows => 5,:id => "text_area",
:cols => 45
.actions
= f.submit
在show视图中我有初始化@ message2.content的表单,但是create action清除我在show action中设置的所有参数,并且只设置内容值。如何让我的表单附加参数(不是为了清旧)?
答案 0 :(得分:1)
def create
@message2 = current_user.sent_messages.new(params[:message])
if @message2.save
redirect_to @message2.receiver
else
render :action => :show
end
end
以下是create
动作的外观。这是一种常用的Rails习语。
它将正确呈现表单,因为实例变量仍然存在。