【发布时间】:2017-11-10 22:29:03
【问题描述】:
我有一个 PagesController 来处理我的应用程序的所有静态页面。它有一个名为join_session 的方法,用于渲染视图pages/page_a.html.erb。这行得通。
我的问题:我正在编写一个在用户重新登录时呈现最后查看的页面的方法(使用User 模型中的Devise hook after_database_authentication)。
我可以从User 模型中调用PagesController join_session 方法吗?
[我不知道怎么做,所以我尝试了一个 hacky 解决方法:在 PagesController 中编写和调用一个类方法,并在那里渲染视图,但是由于新方法的名称与名称不匹配路由中的控制器方法,无法解析视图中的变量。]
我的路线:
get 'pages/page_a', to: 'pages#join_session'
我们将不胜感激! :)
【问题讨论】:
-
请问您为什么要从模型中调用控制器方法?在绝大多数情况下,您会在控制器中调用模型方法,而不是反过来。
-
@Jason :我正在使用 Devise 钩子
after_database_authentication在用户成功登录后执行代码,这将确定最后向他们显示哪个静态页面,然后尝试呈现它。据我从上面链接的线程中收集到的,我需要在User模型中覆盖此方法(我尝试将它放在控制器中 - 它不起作用)。
标签: ruby-on-rails model-view-controller devise ruby-on-rails-5