在控制器的方法之间传递参数(rails)

时间:2011-10-31 14:36:44

标签: ruby-on-rails ruby controller ruby-on-rails-3.1

我有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中设置的所有参数,并且只设置内容值。如何让我的表单附加参数(不是为了清旧)?

1 个答案:

答案 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习语。

它将正确呈现表单,因为实例变量仍然存在。