当控制器与Rails 3.0中的模型不匹配时,是否有更好的方法来指定url和方法

时间:2011-03-08 11:41:20

标签: ruby-on-rails ruby forms model tags

在Rails 3.0中,我有一个TagsController,它处理一个名为Tag的模型,但是ActsAsTaggableOn :: Tag,这意味着生成的URL错误:acts_as_taggable_on_tag_url而不是tag_url。

这迫使我把这种可憎的行为写成:

form_for @tag, :as => :tag, :url => @tag.new_record? ? tags_url : tag_url(@tag), :html => {:method => @tag.new_record? ? :post : :put}  do |form|
    ...

有更好的方法吗?以某种方式告诉Rails该模块的控制器名称不同?

我知道我可以将它分成两个不同的文件,但我不愿意。

1 个答案:

答案 0 :(得分:0)

我认为您使用ActsAsTaggableOn :: Tag模型而不是Tag没有任何区别。 @tag类只会很重要。如果@tag有ID,则以其他方式创建。 尝试使用form_for。

的一般语法