访问模型

时间:2017-05-18 16:38:45

标签: ruby-on-rails ruby

在模型中,我有以下方法:

def some_method
  some_obj.new(view_c: view_context).create_some_links
end

抛出异常,并显示以下消息:

  

未定义的局部变量或方法`view_context'

我完全清楚,从模型中调用与视图相关的方法并不是一个好习惯,但仍然可以:从模型中访问view_context是否可以将其传递给Plain Old Ruby Object(PORO)创建了一些链接?

更新:根据我上面的代码,一个建议可能就是直接在视图中创建并调用PORO。但是:假设代码要求它通过模型才能创建正确的PORO。

view_context doc

1 个答案:

答案 0 :(得分:2)

除非您将view_context传递给方法,否则是不可能的

  • 模型图层与视图图层无关。
  • 模型本身不可能对视图上下文有所了解。
  • 模型无法访问视图上下文。

以下是将视图传递给方法的方法(在视图中):

@model_instance.some_method(self) # self is the view itself

现在,轻微的方法改变可以解决问题:

def some_method(view_context)
  some_obj.new(view_c: view_context).create_some_links
end