1

我有很多通过方法参数接收参数的操作:

class App < E
  map '/'

  def read page
    @page = page
    # etc.
    render
  end

  def profile user
    @user = user
    # etc.
    render
  end
end

我如何在不将它们分配给实例变量的情况下访问模板page中的等?user

4

2 回答 2

2

您在这里至少有 2 个选项。

最直接的一种是使用action_params

def read page
  # use action_params[:page] in templates
end

请注意这仅适用于 Ruby 1.9

在 Ruby 1.8 中使用action_params[0]

另一种方法是将参数作为上下文变量传递:

def profile user
  render :user => user
  # in templates, user is available as #user getter
  # rather than @user instance variable
end
于 2012-12-06T16:21:10.603 回答
1

查看源代码,如果您将哈希传递给渲染函数,它会将这些键作为局部变量分配给视图。就像是

render(:foo => "Bar")

在行动中,然后在你可以做的视图中

<%= foo %>

这将呈现

Bar
于 2012-12-06T16:22:46.563 回答