Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.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 通过Rails 3中的视图在模型中定义的访问Rails方法_Ruby On Rails_Ruby On Rails 3_Form For - Fatal编程技术网

Ruby on rails 通过Rails 3中的视图在模型中定义的访问Rails方法

Ruby on rails 通过Rails 3中的视图在模型中定义的访问Rails方法,ruby-on-rails,ruby-on-rails-3,form-for,Ruby On Rails,Ruby On Rails 3,Form For,我在控制器中定义了一个方法,我试图创建一个按钮或表单来访问它 模型 class DoThis

我在控制器中定义了一个方法,我试图创建一个按钮或表单来访问它

模型

class DoThis
看法


我想将视图中的上述代码转换为按钮或表单,但不知道如何转换


谢谢你不应该这样做。模型不应该包含视图代码——这是故意不容易做到的,因为它破坏了MVC。相反,您应该在
app/helpers/controller\u name\u helper.rb
文件中添加一个helper函数

def take_action(obj)
  button_to( ... )
end

然后,您只需在视图中调用

我是否将当前在模型中的“take\u action”方法中定义的附加代码放入控制器帮助器中新的“take\u action”方法中?我在控制器帮助器中定义了操作,而不是模型,现在我遇到了另一个问题。我在“take_action”中的代码是更新另一个模型DoThisTwo上的.attributes。当代码在原始DoThis模型中定义时,它工作正常,但现在当它在DoThis的控制器中时,我得到了一个带有“undefined Method'attribute”的NoMethodError。我为我在DoThis 2中更新的属性添加了attr_accessible。还有其他建议吗?
<%= @do_this.take_action(@a, @b) %> 
def take_action(obj)
  button_to( ... )
end