Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在控制器内调用方法模型_Ruby On Rails_Methods_Controller - Fatal编程技术网

Ruby on rails 在控制器内调用方法模型

Ruby on rails 在控制器内调用方法模型,ruby-on-rails,methods,controller,Ruby On Rails,Methods,Controller,我有以下模型; (app/models/student\u disactivation\u log.rb) class StudentInactivationLog

我有以下模型; (app/models/student\u disactivation\u log.rb)

class StudentInactivationLog
如果学生无法登录,我想在系统上向他们展示他们的停用原因

我如何从该控制器文件调用我的失活原因?可能吗


提前谢谢

这只是一个常量,所以你可以在任何地方称它为常量

StudentInactivationLog::INACTIVATION_REASONS
更新 我意识到实际上您想要的是使用一个原因码或保存在db中的短名称来表示字符串

如果是这样,我建议您直接使用短名称作为散列。“id”对于这个轻型机箱看起来是多余的

INACTIVATION_REASONS = {"HTY"=>"You didn't study enough!",
                        "KS"=>"Graduated!",
                        "SBK"=>"Other Reason"}

validates :inactivation_reason, inclusion: { in: INACTIVATION_REASONS.keys,
  message: "%{value} is not a valid short name" }

def full_reason_message
  INACTIVATION_REASONS[self.inactivation_reason]
end
然后,在控制器中显示原因的完整消息

reason = @student.full_reason_message

这就是我的想法。我还没有查过你的其他型号代码。您需要将reason保存为短名称而不是id,如果您决定以这种方式使用它,则需要修改/删除一些代码。

当我这样称呼它时:flash.now.alert studentinactiviationlog::INACTIVATION_REASONS.collect{v | v[:name]}只列出所有的停用原因,与student无关。似乎对我不起作用:student::SessionController中的NoMethodError#为nil:nilclass创建未定义的方法“full_reason_message”这不是我方法的问题。你的学生实例为零,这就是原因。你需要找到原因。
INACTIVATION_REASONS = {"HTY"=>"You didn't study enough!",
                        "KS"=>"Graduated!",
                        "SBK"=>"Other Reason"}

validates :inactivation_reason, inclusion: { in: INACTIVATION_REASONS.keys,
  message: "%{value} is not a valid short name" }

def full_reason_message
  INACTIVATION_REASONS[self.inactivation_reason]
end
reason = @student.full_reason_message