Rails form_tag嵌套了嵌套资源

时间:2014-11-20 20:42:06

标签: javascript ruby-on-rails ruby ruby-on-rails-4

我的路线看起来像这样:

resources :teams do

  resources :plans do
    resources :charges
  end

  ...

我想使用form_tag创建一个指向我的charges_controller创建操作的表单。但我需要一些帮助...

我目前的表单看起来像这样(它只是一个按钮,提交是在javascript中完成的):

= form_tag team_plan_charges_path([@team, plan]) do
  = content_tag "button", id: "customButton", class: "btn btn-primary" do
    Select plan

这会导致以下错误:

No route matches {:action=>"index", :controller=>"charges" ... missing required keys: [:plan_id]

我不确定如何根据我的表单,任何想法正确设置form_tag

2 个答案:

答案 0 :(得分:1)

它应该是这样的:

= form_tag @charge, team_plan_charge_path([@team, @plan]), method: :post do
  = content_tag "button", id: "customButton", class: "btn btn-primary" do
    Select plan

答案 1 :(得分:0)

我认为,team_plan_charges_path([@team, plan])应该类似于team_plan_charges_path([@team, @plan, @charges]) 其中@plan和@charges应该在你的收费控制器中,比如

@plan = @team.plans.new
@charges = @plan.charges.new

假设您在团队计划计划以及费用之间存在has_many关联。 我也假设该计划不是帮助中的某种方法,并且根据您的评论method: :post 这是一般的想法,因为您的路线看起来像/ team /:team:id / plan /:plan_id / charge可能。

以下是example