【问题标题】:Call a method that is in my helper on rails 5在 Rails 5 上调用我的助手中的方法
【发布时间】:2018-08-15 17:16:24
【问题描述】:

我在 rails 5 中有一个会话助手,它调用用户表,然后调用会话表,这是因为我的数据库中有相关的,代码如下:

module SessionsHelper
  def generate_user_session
    session_build = user.sessions.build
    session_build.generate_access_token
    session_build.save!
  end
end

问题是当我在控制器中调用该方法时出现此错误:

undefined local variable or method 'user'

我知道这个错误是由于我没有很好地引用我的控制器中的助手,问题是......

如何正确地从控制器中的助手调用方法?


注意:考虑一下,在我的助手中,我正在调用我的表用户,该用户也在调用表会话。

【问题讨论】:

  • Helper 方法旨在从 views 而非控制器中调用。如果您希望这是一个控制器方法同时也是一个辅助方法,请在您的控制器中使用 helper_method 声明。
  • 我会将方法更改为从控制器运行的东西,因为会话是遵循 CRUDE 概念的东西 - 会话是您可能想要创建、删除(或更新)的东西。见例子railstutorial.org/book/basic_login
  • 可能是移动方法generate_user_sessionApplicationController

标签: ruby class controller ruby-on-rails-5 helpers


【解决方案1】:

您正在尝试访问仅在您的控制器上可用的变量 (user)。您可以尝试将@user 设置为instance_variable 并使用。

但正如 tadman 所写,您不应该使用 helper 来控制建议。

如果是用于会话建议,您可以使用concern 或创建一个新类来处理此问题。

【讨论】:

    猜你喜欢
    • 2017-05-25
    • 2011-01-18
    • 1970-01-01
    • 2020-04-24
    • 2016-09-25
    • 1970-01-01
    • 1970-01-01
    • 2010-12-25
    • 1970-01-01
    相关资源
    最近更新 更多