我的账户索引页面列出了所有账户,每个账户都有一个“+服务”链接;这应该将用户引导至 /my_services/new 页面,并使用适当的 ID 预先填充 account_id 字段,具体取决于在 Accounts 索引页面上单击了哪个链接。
我在每个页面的底部都有调试(参数),并且我正在尝试,除了 :controller 和 :action 显示在 /my_services/new 页面的参数中之外,我没有得到任何东西。
我一直在尝试的链接是这样的:
link_to "+ Service", "my_services/new", :account_id => acct.id
然后我在服务控制器中也有逻辑:
def new
@my_service = MyService.new
if params[:account_id]
@my_service.account_id = params[:account_id]
end
end
有人可以帮助以正确的方式做到这一点吗?我还没有尝试过一些讨厌的小东西。
编辑
事实证明,如果有人在将来查看这个答案,嵌套资源(可能带有shallow: true
routes.rb 中的选项)似乎是要走的路。这部分的 routes.rb 现在看起来像这样:
resources :accounts, shallow: true do
resources :services
end
我的链接现在看起来像这样:
<%= link_to "+ Service", new_service_path(:service => { :account_id => @account.id } ) %>