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