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