0

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

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 行向下传递一个“第一个”参数,但我要么在视图页面上没有正确调用它,要么在这里没有正确设置它。下面是我用来尝试在视图页面上调用它的代码:

params[:first]
4

2 回答 2

0

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

@first = params[:first]

在您的视图文件中使用它。

<%= @first.attributes %>
于 2013-05-05T05:45:23.780 回答
0

我认为Quatz的答案行不通。发送redirect_to后实例变量将不可用,这是因为redirect_to实际上将302返回给浏览器并带有redirect Location header,这样浏览器就会被重定向。所以在之前的请求中创建的实例根本不可用。

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

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

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

使用命名路由,您可以传入参数。

于 2013-05-05T08:23:33.923 回答