Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.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_Ruby_Parameters - Fatal编程技术网

Ruby on rails 如何将参数传递到数据库表

Ruby on rails 如何将参数传递到数据库表,ruby-on-rails,ruby,parameters,Ruby On Rails,Ruby,Parameters,请你再帮我一次好吗?我想在制作新菜的时候过一天。我制作了菜肴控制器并查看表单。通过单击视图中的按钮,我想将@day.id的值写入属性day_id中的db表'courses' 注意:在“天”表中,属性的名称为id。 在课程表中,属性的名称是day\u id 课程包括: 型号: 碟形控制器: @day = Day.find_by_id(params[:id])
 看法 日志 哦,奇怪的人。。。我发现了我的错误。在控制器中,我需要写: @day = Day.find_by(params[:id])

请你再帮我一次好吗?我想在制作新菜的时候过一天。我制作了菜肴控制器并查看表单。通过单击视图中的按钮,我想将@day.id的值写入属性day_id中的db表'courses'

注意:在“天”表中,属性的名称为id。 在课程表中,属性的名称是day\u id

课程包括:

型号:

碟形控制器:

@day = Day.find_by_id(params[:id])

看法

日志


哦,奇怪的人。。。我发现了我的错误。在控制器中,我需要写:

@day = Day.find_by(params[:id])
而不是

@day = Day.find_by_id(params[:id])
您正在尝试查找@day by dish id

有必要将@day=day进行更改。在DishesController中通过\u idparams[:id]查找\u到


@day=day.findparams[:courses\u attributes][:day\u id]。

问题在于您在Disks controller中的新操作中的这一行:

@day = Day.find_by_id(params[:id])

你正试图从params那里得到一个id。但我可以在您的日志中看到,您对Disapers/new发出了正常的get请求,url或参数中没有任何id:

GET "/dishes/new"
D想要实现什么目标,您需要在url或参数中传递一个day id,当您进入Districs/new时,或者您需要在控制器中找到不同的@day。当然,您也不能在表单中创建隐藏字段,而是让用户决定选择哪一天。或者,如果你不需要每门课程都有一天的时间,你可以连接到你的,你也可以删除你所拥有的验证


你好谢谢你的回答。NoMethodError undefined method[]”用于nil:NilClass:app/controllers/diseass\u controller.rb:7:in new“如何将day\u id传递给新操作?我想找到day id。我写@day=day.findparams[:id]我得到一个错误ActiveRecord::RecordNotFound在没有IDI的情况下找不到Day,如果我写的是@Day=Day.find2或1/3/4 etc id正在传递并插入到db表courses中,因为您没有向该操作传递Day id。通过path或params传递它。我知道find_by选项不适用于我的案例,因为它会找到第一条记录。当我使用@day=day.findparams[:id]时,我会收到一个错误ActiveRecord::RecordNotFound在没有id的情况下找不到day参数[:id]从URL中获取一个参数,并且我使用ajax,我的URL不会更改,id也无法检索。这个想法正确吗?非常感谢你,克拉拉!我在调用新操作时添加此id:@day。
<div class="new dish">

  <%= form_for @dish do |d|  %>

  <%= d.text_field :name, :placeholder => "Dish name" %>

  <%= d.text_area :description, :placeholder => "Description" %>

  <%= d.text_field :price, :placeholder => "Dish price" %>

  <%= d.fields_for :courses do |c| %>

      <%= c.text_field :name, :placeholder => "Course name" %>

      <%= c.hidden_field :day_id, value: @day.id %>

  <%= d.submit "Save" %>

</div>

<% end %>

<% end %>
Started GET "/dishes/new" for ::1 at 2020-10-20 12:59:34 +0300
Processing by DishesController#new as HTML
  Day Load (0.2ms)  SELECT "days".* FROM "days" WHERE "days"."id" IS NULL LIMIT ?  [["LIMIT", 1]]
  ↳ app/controllers/dishes_controller.rb:7:in `new'
  Rendering dishes/new.html.erb within layouts/application
  Rendered dishes/new.html.erb within layouts/application (Duration: 2.9ms | Allocations: 1942)
Completed 500 Internal Server Error in 8ms (ActiveRecord: 0.2ms | Allocations: 4393)

ActionView::Template::Error (undefined method `id' for nil:NilClass):
     5:   <%= d.text_field :price, :placeholder => "Dish price" %>
     6:   <%= d.fields_for :courses do |c| %>
     7:       <%= c.text_field :name, :placeholder => "Course name" %>
     8:       <%= c.hidden_field :day_id, value: @day.id %>
     9:   <%= d.submit "Save" %>
    10: </div>
    11: <% end %>
  
app/views/dishes/new.html.erb:8
app/views/dishes/new.html.erb:6
app/views/dishes/new.html.erb:2
@day = Day.find_by(params[:id])
@day = Day.find_by_id(params[:id])
@day = Day.find_by_id(params[:id])

GET "/dishes/new"
class Course < ApplicationRecord

  belongs_to :day
, optional: true
  belongs_to :dish

end