Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/54.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在同一视图中创建这两个模型有许多属于子模型和父模型的关联_Ruby On Rails_Has Many_Belongs To - Fatal编程技术网

Ruby on rails 在同一视图中创建这两个模型有许多属于子模型和父模型的关联

Ruby on rails 在同一视图中创建这两个模型有许多属于子模型和父模型的关联,ruby-on-rails,has-many,belongs-to,Ruby On Rails,Has Many,Belongs To,所以我有两个模型: #app/models/diy.rb class Diy < Activerecord::Base #schema id | summary | created_at | updated_at has_many :steps end #app/models/step.rb class Step < ActiveRecord::Base # schema id | step_content | photo | created_at | upda

所以我有两个模型:

#app/models/diy.rb
class Diy < Activerecord::Base
   #schema id | summary | created_at | updated_at 
   has_many :steps
end

#app/models/step.rb
class Step < ActiveRecord::Base
   # schema id | step_content | photo | created_at | updated_at
   belongs_to :diy
end
#app/models/diy.rb
类Diy
有没有办法在同一视图中创建diy数据库行并与之关联的step数据库行

最接近我的是:

 <%= form_for(@diy) do |f| %>
   <%= f.label :summary  %><br>
   <%= f.text_field :summary %><br>
   <%= f.label :steps  %><br>
   <%= f.text_field :steps %><br>
   <%= f.submit %>
 <% end %>





但使用这段代码,我不会访问step表中的任何列

如果这有助于解决问题,那么通过这段代码,我会得到“Steps”文本字段,该字段已经填充了“Step::ActiveRecord\u Associations\u CollectionProxy:0x9613ce0”

要创建表单输入,请使用:

为了避免收到一堆垃圾步骤,您可以使用
如果
则拒绝\u选项:

class Diy < ActiveRecord::Base
  has_many :steps
  accepts_nested_attributes_for :steps, reject_if: :all_blank
end
请阅读:
要创建表单输入,请使用:

为了避免收到一堆垃圾步骤,您可以使用
如果
则拒绝\u选项:

class Diy < ActiveRecord::Base
  has_many :steps
  accepts_nested_attributes_for :steps, reject_if: :all_blank
end
请阅读:

要添加到
@Max
的答案中,您需要使用以下选项:

#app/models/diy.rb
class Diy < Activerecord::Base
   #schema id | summary | created_at | updated_at 
   has_many :steps
   accepts_nested_attributes_for :steps
end

#app/controllers/diys_controller.rb
class DiysController < ApplicationController
   def new
      @diy = Diy.new
      @diy.steps.build
   end

   def create
      @diy = Diy.new diy_params
      @diy.save
   end

   private

   def diy_params
      params.require(:diy).permit(steps_attributes: [:step_content])
   end
end

#app/views/diys/new.html.erb
<%= form_for @diy do |f| %>
   <%= f.fields_for :steps do |s| %>
      <%= s.number_field :step_count %>
   <% end %>
   <%= f.submit %>
<% end %>

要添加到
@Max
的答案中,您需要使用以下选项:

#app/models/diy.rb
class Diy < Activerecord::Base
   #schema id | summary | created_at | updated_at 
   has_many :steps
   accepts_nested_attributes_for :steps
end

#app/controllers/diys_controller.rb
class DiysController < ApplicationController
   def new
      @diy = Diy.new
      @diy.steps.build
   end

   def create
      @diy = Diy.new diy_params
      @diy.save
   end

   private

   def diy_params
      params.require(:diy).permit(steps_attributes: [:step_content])
   end
end

#app/views/diys/new.html.erb
<%= form_for @diy do |f| %>
   <%= f.fields_for :steps do |s| %>
      <%= s.number_field :step_count %>
   <% end %>
   <%= f.submit %>
<% end %>
class Diy < ActiveRecord::Base
  has_many :steps
  accepts_nested_attributes_for :steps, reject_if: :all_blank
end
def diy_params
  params.require(:diy).permit(:summary, steps_attributes: [:step_content])
end
#app/models/diy.rb
class Diy < Activerecord::Base
   #schema id | summary | created_at | updated_at 
   has_many :steps
   accepts_nested_attributes_for :steps
end

#app/controllers/diys_controller.rb
class DiysController < ApplicationController
   def new
      @diy = Diy.new
      @diy.steps.build
   end

   def create
      @diy = Diy.new diy_params
      @diy.save
   end

   private

   def diy_params
      params.require(:diy).permit(steps_attributes: [:step_content])
   end
end

#app/views/diys/new.html.erb
<%= form_for @diy do |f| %>
   <%= f.fields_for :steps do |s| %>
      <%= s.number_field :step_count %>
   <% end %>
   <%= f.submit %>
<% end %>
#controller
def diy_params
   params.require(:diy).permit(step_ids: [])
end

#app/views/diys/new.html.erb
<%= form_for @diy do |f| %>
   <%= f.collection_select :step_ids, Step.all, :id, :name %>
   <%= f.submit %>
<% end %>