【问题标题】:Where should I create methods to use in my view?我应该在哪里创建在我的视图中使用的方法?
【发布时间】:2012-06-23 16:34:47
【问题描述】:

很抱歉这个新手问题,但我经常想知道。 我应该在哪里创建我想在我的视图中使用的方法??

我会举例说明。 我想在我的 user/views/show.html.erb 中调用一个返回布尔值的方法,然后我可以在 show 页面上显示一个链接,或者不是。

好吧,我一直认为应该在模型 User.rb 中创建此方法! 但我实际上得到的是一个未定义的方法错误!

感谢您的帮助!

谢谢

更新

当我在 User Helper 中创建方法时,它确实有效。. 但这是好的编程吗?这是正确的方式吗?或者有没有更好的方法?

【问题讨论】:

  • 您可能应该向我们展示用户模型的相关部分。
  • 这只是一个返回true的虚拟方法。

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


【解决方案1】:

现在我更喜欢使用演示者,类似于 shown in this Railscast。它让你的代码保持干净、可重用,并且比 Rails Helpers 更接近 OO,这让你更清醒。 :)

【讨论】:

  • 你用布料吗?因为我安装了 gem,但是 g draper:decorator 命令不起作用。它找不到这个特定的生成器。
  • 你把它添加到你的Gemfile了吗?它应该是 AFAICT。
  • 什么是 AFAICT?是的,它在我的 Gemfile 中,但我无法生成,因为它的语法与 railscast 中使用的 onw 不同。但是在装饰器中,当我调用辅助方法时会出现 NoMethodError 。甚至使用“h”。在方法名称之前指定这是一个辅助方法...
【解决方案2】:

我认为,如果它的显示相关代码,它可能应该进入特定的帮助程序,或者如果你希望它在所有视图中都可用,它应该进入“application_helper”。格式化和显示逻辑(就像你所拥有的一样)应该进入帮助程序。

如果该方法要更改您的数据,那么它可能应该进入模型。不确定你得到的是什么未定义的方法错误,因为它应该可以工作。

【讨论】:

    【解决方案3】:

    其实各位,很简单 这里的新手没有使用对象调用它的用户方法: 示例:@user.my_metho 我只是在调用 my_method

    这就是问题所在。

    但正如 Pedro 所说,Draper 宝石对我真的没有多大作用…… 甚至无法让它正常工作......

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-05
      • 1970-01-01
      相关资源
      最近更新 更多