【问题标题】:Access Rails Method Defined In Model Through View In Rails 3通过Rails 3中的视图访问模型中定义的Rails方法
【发布时间】:2010-08-16 03:13:21
【问题描述】:

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

型号

class DoThis < ActiveRecord::Base

 def take_action(a, b)

 end

end

查看

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

我想将视图中的上述代码转换为 button_to 或 form_for 但不知道如何。

谢谢

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 form-for


    【解决方案1】:

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

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

    然后,您只需在视图中调用&lt;%=take_action(@do_this) %&gt;

    【讨论】:

    • 我是否将当前在模型中的“take_action”方法中定义的附加代码放入控制器助手中新的“take_action”方法中?
    • 我在控制器助手而不是模型中定义了动作,现在我遇到了另一个问题。我在“take_action”中的代码是在另一个模型--DoThisTwo 上更新.attributes。该代码在原始 DoThis 模型中定义时可以正常工作,但现在当它位于 DoThis 的 CONTROLLER 中时,我得到一个 NoMethodError 和“未定义的 mehtod '属性'。我为我在 DoThisTwo 中更新的属性添加了 attr_accessible。任何其他建议?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-15
    相关资源
    最近更新 更多