Rails,在一个控制器中创建多个方法?

时间:2011-12-16 12:34:34

标签: ruby-on-rails controller

我需要在一个控制器中有两个(或者甚至更多)不同的创建(和更新)方法。我已经有显示表单的视图,所以我基本上只需要告诉提交在控制器中调用哪个方法。那可能吗?如果是这样,怎么样?或者我可以只有一个create方法,并且该方法根据称为方法的视图执行不同的操作?

由于

3 个答案:

答案 0 :(得分:0)

忽略这听起来像是一个非常可怕的想法的事实,这是可能的。您需要添加一些与控制器中的新操作相匹配的路径。您将无法将它们称为“创建”和“更新”,因为方法名称在同一个类中必须是唯一的。

话虽如此,我真的恳求你重新考虑一下你的做法。 REST,如Rails Getting Started guide中所述,是构建Rails应用程序的标准。如果你不熟悉它,我会建议你停在那里并阅读它。您的应用程序将更容易构建和维护,您不会浪费时间询问结构性问题。如果你熟悉它并且选择忽略它,那么我祝你好运。

答案 1 :(得分:0)

您可以使用此命令:

  

rails g scaffold_controller'controller_name'

或者如果使用痉挛方法,你可以使用它:

  

rails生成控制器'controller_name'添加新

答案 2 :(得分:0)

让我们说你有一个对象Book。只要该方法可以访问books_controller.rb,您就可以在@book.id内的任何方法中更改Book的值。

def crazy_create_method
  book.create (book_params)
  book.save
end

话虽如此,试着坚持使用默认的new / create方法,如果你以后需要变得怪异,那么总是很容易调用代码属于你需要的任何方法。 Rails将大量开箱即用的功能融入默认的REST操作中。

book.title = my_title  
book.save