【问题标题】:Rails partial for different controllersRails 部分用于不同的控制器
【发布时间】:2012-04-27 06:34:15
【问题描述】:

所以我有不同的控制器,它们共享很多功能,我想知道是否有办法在它们之间共享类似的功能。

例如:

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

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

想法受到赞赏。

编辑

@defaye:我要做的是重用上面的代码并将其应用于 7 个左右不同的控制器。 上面的代码只是一堆始终相同的链接和路径的示例,唯一改变的是 dvd_path(dvd) 变成了 book_path(book) 等。

我想要最简单、更直接的方法。

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

谢谢。

【问题讨论】:

  • 我认为您应该添加您想要避免的内容,否则建议您已经知道的内容太诱人了(根据我对这个问题的理解)

标签: ruby-on-rails-3.1


【解决方案1】:

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

这是一个例子。您可以在 ApplicationHelper 中定义它。

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

在你看来

= link_to_edit(object)

【讨论】:

  • 抱歉之前的帖子,我不知道我必须在文件顶部包含module ApplicationHelper。现在可以了。
  • 出于好奇,有没有办法在不明确发送对象的情况下做到这一点?班级不应该意识到自己吗?
  • 此外,此操作不起作用:url_for(:id => object, :action => 'destroy') 它将转换为:games/:id 并调用 show 操作。调用destroy 操作的正确方法是什么?谢谢。
猜你喜欢
  • 2011-07-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-28
  • 1970-01-01
  • 1970-01-01
  • 2013-09-06
  • 2011-08-22
相关资源
最近更新 更多