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

Ruby on rails 在控制器(rails)的方法之间传递参数,ruby-on-rails,ruby,controller,ruby-on-rails-3.1,Ruby On Rails,Ruby,Controller,Ruby On Rails 3.1,我有两个控制器方法创建和显示 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 en

我有两个控制器方法创建和显示

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

我的表格

= form_for(@message2) do |f|

  %p
    Content:
    %br
    = f.text_area :content ,:rows => 5,:id => "text_area",
                :cols => 45

  .actions
    = f.submit
在show view中,我有一个初始化@message2.content的表单,但create action会清除我在show action中设置的所有参数,并只设置内容值。如何使我的表单附加参数(而不是清除旧参数)

下面是您的
create
操作的外观。这是一个常用的Rails习惯用法

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

下面是您的
create
操作的外观。这是一个常用的Rails习惯用法


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

请帮助,非常需要解决此问题。我真的不明白您想要做什么?你能发表你的观点吗?。注意:根据合同,您的节目应该只显示消息,为什么您要在节目中更新和创建新消息?因为我在create中没有params[:id];我开始在show方法中初始化@message2。并希望在create中继续初始化。但我不知道如何,我只能在行动中创造新的。我是新手,我知道有很多方法可以做到这一点,但我不知道它们是什么(我的表单初始化:主题参数,我想将此参数添加到现有变量中,而不是创建新的变量:仅初始化请,帮助,非常需要解决此问题我真的不明白您想要做什么?您可以发布视图吗?。注:您的节目,根据合同,应该只显示消息,为什么要更新和创建显示中的新消息?因为我在create中没有参数[:id];我开始在show方法中初始化@message2。我想在create中继续初始化。但我不知道如何,我只能在create操作中创建新消息。我是新手,我知道有很多方法可以做到这一点,但我不知道它们是什么(我的表单初始化:主题参数,我想将此参数添加到现有变量中,而不是创建一个新的变量:there initialized only ymm,它是否会初始化:receiver_id和:sender_id?就像我在show action中初始化的一样?因为在我的情况下,创建操作是在show action之后执行的。您必须添加
f.hidden_字段:receiver。)_id
:发送人\u id
到表单。谢谢,这就像我做的一样,但有一个人告诉我这不是一个好方法,对吗?我总是需要使用隐藏字段?例如,如果我将有两个表单用于一个模型(1个表单初始化1个参数,秒-秒),我需要使用隐藏字段?@Pavel,好的,我不确定您的对象是如何组织的,但似乎
sender==当前用户
,因此您不必在表单中指定
sender\u id
,但您仍然必须指定
接收方id
,除非您从路由中获得它。在这种情况下,您必须将其与
参数[:消息]
create
中。嗯,它是否会初始化:receiver\u id和:sender\u id?就像我在show action中初始化的一样?因为在我的情况下,创建操作是在show action之后执行的。你必须在表单中添加
f.hidden\u字段:receiver\u id
:sender\u id
。谢谢,这就像我做的一样,但一个人告诉我它不是好方法,他是对的吗?我总是需要使用隐藏字段?例如,如果我将有2个表单用于1个模型(1个表单初始化1个参数,秒-秒),我需要使用隐藏字段?@Pavel,好的,我不确定您的对象是如何组织的,但似乎
sender==当前用户
,因此您不必在表单中指定
sender\u id
,但您仍然必须指定
接收方id
,除非您从路由中获得它。在这种情况下,您必须将其与
参数[:message]
创建中。
= form_for(@message2) do |f|

  %p
    Content:
    %br
    = f.text_area :content ,:rows => 5,:id => "text_area",
                :cols => 45

  .actions
    = f.submit
def create
  @message2 = current_user.sent_messages.new(params[:message])         
  if @message2.save
    redirect_to @message2.receiver    
  else
    render :action => :show
  end
end