我可以配置记录标识以使用自定义命名和 rails 资源的自定义控制器吗?
Can I configure record identification to work with custom naming and a custom controller for a rails resource?
假设我在我的路线中定义了以下行
resources :a, controller: 'b', as: 'a'
和以下控制器
class BController < ApplicationController
...
def new
@b = B.new
end
def edit
@b = B.find(params[:id])
end
end
有没有办法编写部分表单,以便我可以在新视图和编辑视图中使用它?例如,如果我写
<%= form_for @b do |f| %>
...
<% end %>
Rails 给我一个路由错误。
不优雅的解决方案
我想出了一个不优雅的解决方案,将 BController 写成
class BController < ApplicationController
...
def new
@b = B.new
@url = bs_path
end
def edit
@b = B.find(params[:id])
@url = b_path
end
end
然后把表格写成
<%= form_for(@b, url: @url) do |f| %>
...
<% end %>
我想知道是否有更多 "Rails" 方法来完成此操作,而无需写入 @url 变量
看起来您可能正在寻找 resources 的 :path
选项...如果我按照您的示例正确执行,您有一个模型 B
并且您想要访问它在 /a
或 /a/:id
并且能够使用 a_path(instance_of_b)
...所以我觉得你希望你的路线是
resources :b, as: 'a', path: 'a'
我相信这会满足您的需求。
假设我在我的路线中定义了以下行
resources :a, controller: 'b', as: 'a'
和以下控制器
class BController < ApplicationController
...
def new
@b = B.new
end
def edit
@b = B.find(params[:id])
end
end
有没有办法编写部分表单,以便我可以在新视图和编辑视图中使用它?例如,如果我写
<%= form_for @b do |f| %>
...
<% end %>
Rails 给我一个路由错误。
不优雅的解决方案
我想出了一个不优雅的解决方案,将 BController 写成
class BController < ApplicationController
...
def new
@b = B.new
@url = bs_path
end
def edit
@b = B.find(params[:id])
@url = b_path
end
end
然后把表格写成
<%= form_for(@b, url: @url) do |f| %>
...
<% end %>
我想知道是否有更多 "Rails" 方法来完成此操作,而无需写入 @url 变量
看起来您可能正在寻找 resources 的 :path
选项...如果我按照您的示例正确执行,您有一个模型 B
并且您想要访问它在 /a
或 /a/:id
并且能够使用 a_path(instance_of_b)
...所以我觉得你希望你的路线是
resources :b, as: 'a', path: 'a'
我相信这会满足您的需求。