2017-08-04 96 views
-1

后,有许多指导和解决问题的林混淆如何创建此的form_for尝试了很多次,我有这样的代码......的form_for 2拉特深嵌套对象错误红宝石

路线

Rails.application.routes.draw do 
    get 'welcome/index' 

    resources :flows do 
    resources :fmodules do 
     resources :levers 
    end 
    end 

    root 'welcome#index' 

end 

  welcome_index GET /welcome/index(.:format)          welcome#index 
    flow_fmodule_levers GET /flows/:flow_id/fmodules/:fmodule_id/levers(.:format)   levers#index 
         POST /flows/:flow_id/fmodules/:fmodule_id/levers(.:format)   levers#create 
new_flow_fmodule_lever GET /flows/:flow_id/fmodules/:fmodule_id/levers/new(.:format)  levers#new 
edit_flow_fmodule_lever GET /flows/:flow_id/fmodules/:fmodule_id/levers/:id/edit(.:format) levers#edit 
    flow_fmodule_lever GET /flows/:flow_id/fmodules/:fmodule_id/levers/:id(.:format)  levers#show 
         PATCH /flows/:flow_id/fmodules/:fmodule_id/levers/:id(.:format)  levers#update 
         PUT /flows/:flow_id/fmodules/:fmodule_id/levers/:id(.:format)  levers#update 
         DELETE /flows/:flow_id/fmodules/:fmodule_id/levers/:id(.:format)  levers#destroy 
      flow_fmodules GET /flows/:flow_id/fmodules(.:format)        fmodules#index 
         POST /flows/:flow_id/fmodules(.:format)        fmodules#create 
     new_flow_fmodule GET /flows/:flow_id/fmodules/new(.:format)       fmodules#new 
     edit_flow_fmodule GET /flows/:flow_id/fmodules/:id/edit(.:format)     fmodules#edit 
      flow_fmodule GET /flows/:flow_id/fmodules/:id(.:format)       fmodules#show 
         PATCH /flows/:flow_id/fmodules/:id(.:format)       fmodules#update 
         PUT /flows/:flow_id/fmodules/:id(.:format)       fmodules#update 
         DELETE /flows/:flow_id/fmodules/:id(.:format)       fmodules#destroy 
        flows GET /flows(.:format)            flows#index 
         POST /flows(.:format)            flows#create 
       new_flow GET /flows/new(.:format)           flows#new 
       edit_flow GET /flows/:id/edit(.:format)          flows#edit 
        flow GET /flows/:id(.:format)           flows#show 
         PATCH /flows/:id(.:format)           flows#update 
         PUT /flows/:id(.:format)           flows#update 
         DELETE /flows/:id(.:format)           flows#destroy 
        root GET /               welcome#index 

车型

class Lever < ApplicationRecord 
    belongs_to :fmodel 
end 

class Fmodule < ApplicationRecord 
    belongs_to :flow 
    has_many :levers, dependent: :destroy 
end 

控制器方法

class LeversController < ApplicationController 

    before_action :load_fmodule 

    # /flows/1/fmodules/1/levers/new 
    def new 
     @lever = @fmodule.levers.build 
    end 

    private 
     def load_fmodule 
      @fmodule = Fmodule.find(params[:fmodule_id]) 
     end 
end 

形式...

<%= form_for ([@flow, @fmodule, @lever]) do |l| %> 

当然的​​只是一个假设,我需要帮助这里。我试图用_form创建new视图,其中包含form_for。我在editshow视图中也使用这个_form

回答

0

THX所有,我固定它指定在的form_for

<%= form_for([@flow, @fmodule, @lever], url: flow_fmodule_levers_path) do |l| %>

0

这会帮助你制作你的表格。

<%= form_for @flow, do |u| %> 
    <%= fields_for @fmodule do |j| %> 
    <%= fields_for @lever do |l| %> 

这里@flow表单包含fmodule和杠杆字段。

+0

林不知道有关的URL,好像正在试图因为现在红宝石说'参数是保存一个新的'flow'缺少或值为空:流量。 在这种情况下,我正在制作'新'杠杆'的视图' – Pistorius

+0

让你的问题更加清晰。 – 2017-08-04 17:13:11

+0

我需要为2层深嵌套对象(杠杆)创建'new'视图,为此im试图创建一个form_for像我在其他嵌套对象(fmodel)中,但这很容易,因为是一个嵌套的简单(1 lvl)。这里是'<%= form_for([@flow,@fmodule])do | f | %>' – Pistorius