マイ アカウントのインデックス ページにはすべてのアカウントが一覧表示され、アカウントごとに「+ サービス」へのリンクがあります。これにより、ユーザーは /my_services/new ページに移動し、アカウント インデックス ページでクリックされたリンクに応じて、account_id フィールドに適切な ID が事前入力されます。
すべてのページの下部に debug(params) がありますが、私が試していることでは、/my_services/new ページのパラメーターに :controller と :action が表示される以外は何も得られません。
私が試してきたリンクはこれです:
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 } ) %>