实例变量在设备控制器中不起作用 - Rails 4

时间:2015-10-02 08:57:50

标签: ruby-on-rails devise

我无法正确地说出标题,但我希望你理解。我已按照关于如何generate a controller的确切示例。

rails generate devise:controllers users

我的路线:

devise_for :users, controllers: { sessions: "users/sessions" }

然后将(new.html.erb)从devise/sessions复制到views/users/sessions,然后从devise/sessions/

删除该视图

然后在:

class Users::SessionsController < Devise::SessionsController
  def new
     super
    @foo = 'Bar'
  end
end

现在在views/users/sessions/new.html.erb

<%= @foo %> # should show Bar

没有显示。我错过了什么吗?

1 个答案:

答案 0 :(得分:3)

这就是你的SessionsController应该是这样的:

class Users::SessionsController < Devise::SessionsController
  def new
    @foo = 'bar'
    super
  end
end

请注意super低于您的自定义代码。

当你致电super时,它会调用父方法;在我们的案例中Devise::SessionsController#new。在调用该方法并呈现@foo之前,您需要初始化new.html.erb