2012-06-23 46 views
0

对不起,我经常想知道这个新手问题。 我应该在哪里创建我想在我的View中使用的方法?我应该在哪里创建在我的视图中使用的方法?

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

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

我会提供帮助!

感谢

UPDATE

它的工作,当我创建的用户助手 .. 的方法,但就是编程? 正确方式?还是有更好的方式?

+1

你或许应该向我们展示了用户模型的相关部分。 –

+0

这只是一个返回true的虚拟方法。 – Breno

回答

0

其实,大家好,这是很简单的 新手在这里并没有使用对象调用它的用户的方法: 例如:@ user.my_metho 我想打电话my_method

这是问题。

但随着佩德罗提到德雷珀宝石真的没有为我做了... 甚至不能让它正常工作...

0

我认为,如果它的显示相关的代码,它应该可能进入特定的帮手,或者在'application_helper',如果你想在所有视图中可用。格式化和显示逻辑(像你所拥有的)应该进入助手。

如果方法要对数据进行更改,那么它可能应该放入模型中。不知道你得到一个未定义的方法错误,因为它应该工作。

2

现在我更喜欢使用一个主持人,类似于shown in this Railscast。它使您的代码保持清洁,可重用,并且比Rails Helpers更接近OO,这使您更加理智。 :)

+0

你使用过滤器吗? 因为我安装了gem而是g draper:decorator命令不起作用。它找不到这个特定的生成器。 – Breno

+0

你把它添加到你的'Gemfile'中吗?它应该是AFAICT。 –

+0

什么是AFAICT? 是的,它在我的Gemfile中,我无法生成,因为它的语法不同于railscast中使用的onw。 但在装饰器中,当我调用辅助方法时,我得到一个NoMethodError。甚至使用'h'。在mehtod名称之前指定它是辅助方法... – Breno

相关问题