我可以配置记录标识以使用自定义命名和 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'

我相信这会满足您的需求。