在create controller成功后,在respond_to方法中传递一个附加变量

时间:2013-05-05 05:30:54

标签: ruby-on-rails ruby ruby-on-rails-3

我想向视图控制器传递一个在触发成功创建事件后可以使用的参数。现在,在创建活动结束时,我有以下内容:

respond_to do |format|
  if @link.save
    format.html { redirect_to @link, :notice => 'Link was successfully created.', :first => 'true' }
  else
    format.html { render action: "new" }
  end
end

我试图在第3行中传递'first'参数,但我要么在视图页面上没有正确调用它,要么我在这里没有正确设置它。下面是我用来尝试在视图页面上调用它的代码:

params[:first]

2 个答案:

答案 0 :(得分:0)

在这种情况下,您可以使用实例变量。像这样创建一个实例变量@first。

@first = params[:first]

在您的视图文件中使用此功能。

<%= @first.attributes %>

答案 1 :(得分:0)

我认为Quatz的答案是行不通的。发送redirect_to后,实例变量将不可用,这是因为redirect_to实际上将302返回到具有重定向Location头的浏览器,以便重定向浏览器。因此,在先前请求中创建的实例根本不可用。

您的问题可能有两种解决方案:

  1. 使用会话。在调用redirect_to之前,session [:first] = true。之后,您可以使用session [:first]
  2. 访问该值
  3. 将redirect_to修改为类似

    的内容

    redirect_to link_path(@ link,:first =&gt;'true'),:notice =&gt; '链接已成功创建。'}

  4. 使用命名路由可以传入参数。