ruby-on-rails - 在我的 View 中使用 session 变量

标签 ruby-on-rails variables

有人告诉我,我不应该使用诸如 params[:user_id] 之类的变量。在我的 View 文件中。相同的规则是否适用于 session多变的?

如果没有,那我该怎么办?首先将它分配给一个实例变量,然后在 View 中使用它?这似乎很烦人,因为我必须为我的每个 Action 都这样做。我想我可以将这个重复的代码放在一个方法中,该方法被该类中的所有其他操作调用。

最佳答案

此建议来自构成 Rails 应用程序的不同组件之间“关注点分离”的最佳实践。确定当前用户的最佳位置是在您的 Controller 中。您可以在此处访问参数和/或 session 以确定是否有人直接或间接通过身份验证插件登录。然后,如果您在 View 中需要此信息,只需将其存储在诸如 @user 之类的变量中,该变量将自动在您的 View 中用于显示目的。这样做,如果您稍后更改您的身份验证机制,您可以在不触及您的 View 的情况下这样做,这很好地表明您在应用程序中的不同组件之间有很好的分离。

同样针对您问题的第二部分:

I guess I could put this repetitive code in one method which gets called by all the other actions in that class.



这可以通过 Controller 中的 :before_filter 轻松完成,您可以指向一个方法来检查身份验证并创建任何必要的实例变量以在 Controller 中的操作之间共享。

关于ruby-on-rails - 在我的 View 中使用 session 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/653916/

相关文章:

ruby-on-rails - Rails 创建!使用错误的类

ruby-on-rails - Ruby 日期时间解析

mysql - 在 mysql 中创建一个 Where 子句

python类变量按值查找

ruby-on-rails - Spork 不会重新加载代码

ruby-on-rails - 如何让 Rspec 看到我的服务文件夹?

javascript - 是否可以直接从服务 worker (ServiceWorkerGlobalScope)读取变量?

javascript - 使用对象属性在 for 循环中声明变量

javascript - jquery 变量值出血

c - C 'deallocates' 局部堆栈变量时?