Ruby on rails 轨道,形式为secon路线,但型号相同

Ruby on rails 轨道,形式为secon路线,但型号相同,ruby-on-rails,rest,Ruby On Rails,Rest,在Rails4应用程序中,我有一个图书资源,这是一个带有控制器、视图和路由的图书模型。它是通过以下方式创建的: rails g scaffold book title 现在我想有另一组视图(和另一个控制器),允许管理相同的模型,可能专用于不同的用户 我希望创建功能和编辑功能在这个不同的路线和视图上都可用 我们把它叫做书2 /book2 url中的视图应在Book2sController上运行。 支持表格 但是的表单_猜测模型类中的提交路由(并将其放在action属性中),因为它总是Book,所

在Rails4应用程序中,我有一个图书资源,这是一个带有控制器、视图和路由的图书模型。它是通过以下方式创建的:

rails g scaffold book title
现在我想有另一组视图(和另一个控制器),允许管理相同的模型,可能专用于不同的用户
我希望创建功能和编辑功能在这个不同的路线和视图上都可用
我们把它叫做书2
/book2 url中的视图应在Book2sController上运行。

支持表格 但是的
表单_猜测模型类中的提交路由(并将其放在action属性中),因为它总是Book,所以rails可以猜测提交url是/books/1 for edit或/books/for new,而不是/book2s/1 for edit和/book2s/for new
所以我找到了这个解决方案,但我觉得有点麻烦。 还有更好的吗

<%= form_for @book, :url => @book.new_record? ? url_for(book2s_path) :   url_for(book2_path(@book))  do |f| %>
    <%= f.text_field :title %>
<% end %>
@book.new\u记录?url_for(book2s_path):url_for(book2_path(@book))do | f |%>

您可以在控制器中设置url

def new
  # ...
  @form_url = book2s_path
  # ...
end

def edit
  # ...
  @form_url = book2_path(@book)
  # ...
end
然后您的视图变成:

<%= form_for @book, :url => @form_url  do |f| %>
    <%= f.text_field :title %>
<% end %>
@form|url do|f|%>
我还看到:

<%= form_for @book, :url => {:controller => 'book2s', :action => @action}  do |f| %>
    <%= f.text_field :title %>
<% end %>
{:controller=>'book2s',:action=>@action}do | f |%>
您只需在控制器中设置
@action
(可能是
create
update

请注意,您不需要像以前那样为
包含
url\u