2012-04-25 56 views
2

所以我有不同的控制器共享很多功能,我想知道是否有一种方法来共享他们之间的相似功能。Rails部分为不同的控制器

例如这样的:

= link_to 'Edit', dvd_path(dvd), :class => 'btn' 

当管制员之间唯一改变的是对象,而不是DVD的将是书或游戏。所以我认为必须有一种方法来创建一个使用该控制器的正确路径的部分,而不必重写每一个。而不必发送该对象。

想法表示赞赏。

编辑

@defaye:我想要做的是重用我有以上并将其应用到7个左右不同的控制器代码。 上面的代码只是一堆链接和路径的例子,它们总是相同的,唯一改变的就是dvd_path(dvd)变成了book_path(book)等。

我想要最简单的,更直接的做法。

事实上,我现在想知道是否有可能具有处理多个控制器的相同视图,因为它们非常相似。这将是太棒了!

谢谢。

+1

我想你应该在你想避免否则就太诱人建议你已经知道什么添加(从我的理解阅读这个问题) – Jonathan 2012-04-25 23:19:24

回答

0

如果你的代码只是几个方法,你根本就不需要部分。帮手可以帮助你。

下面是一个例子。你可以在ApplicationHelper中定义它。

# application_helper.rb 
def link_to_edit(object) 
    link_to('Edit', polymorphic_path(object, :action => 'edit'), :class => 'btn') 
end 

而且在你看来

= link_to_edit(object) 
+0

对不起在之前的文章中,我不知道我必须在模块的顶部加入'Module ApplicationHelper'。现在它可以工作。 – kakubei 2012-04-26 13:51:20

+0

出于好奇,有没有办法做到这一点,而不明确发送对象?班上的学生不应该意识到自己吗? – kakubei 2012-04-26 13:54:34

+0

此外,这个动作不起作用:'url_for(:id => object,:action =>'destroy')'它会转换为:games /:id并调用'show'动作。调用'destroy'行为的正确方法是什么?谢谢。 – kakubei 2012-04-26 14:14:45

相关问题