是否可以配置记录标识以使用 rails 资源的自定义命名和自定义控制器?



>假设我在路由中定义了以下行

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变量

似乎您可能正在寻找资源的:path选项...如果我正确遵循您的示例,那么您有一个模型B,并且您希望在/a/a/:id访问它并能够使用a_path(instance_of_b)......所以我觉得你希望你的路线是

resources :b, as: 'a', path: 'a'

我相信这会做你想要的。

相关内容

  • 没有找到相关文章

最新更新