2010-08-16 51 views
0

我有一个在我的控制器中定义的方法,我试图创建一个按钮或窗体来访问。访问导轨方法定义在模型中通过在导轨中查看3

型号

class DoThis < ActiveRecord::Base 

def take_action(a, b) 

end 

end 

查看

<%= @do_this.take_action(@a, @b) %> 

我想上面的代码在视图转换为button_to或的form_for但无法弄清楚如何。

谢谢

回答

2

你不应该这样做。模型不应该包含视图代码 - 这样做并不容易,因为它打破了MVC。相反,您应该在app/helpers/controller_name_helper.rb文件中添加一个辅助函数。

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

然后,您只需在您的视图中拨打<%=take_action(@do_this) %>即可。

+0

我是否会将当前在模型中的“take_action”方法中定义的附加代码放入控制器助手中的新“take_action”方法中? – Joey 2010-08-17 01:12:50

+0

我在控制器助手而不是模型中定义了动作,现在我遇到了另一个问题。我在“take_action”里面的代码是在另一个模型--DoThisTwo上update.attributes。当代码在原来的DoThis模型中定义时,代码正常工作,但现在我得到了一个N​​oMethodError,它带有“undefined mehtod'属性',当它在DoThis的控制器中时,我在attr_accessible中添加了我在DoThisTwo中更新的属性。建议? – Joey 2010-08-17 04:18:52

+0

得到它的工作thx – Joey 2010-08-18 16:50:01