ruby-on-rails - ActionController::RoutingError (没有路线匹配 [POST] "/cars/1/consumptions/new"):
问题描述
添加消费时出现此路由错误(提交失败后)并且我卡住了,我做错了什么?
一个用户可以拥有几辆汽车,并且他想为他的每辆汽车照顾他的汽油消耗。
我有三个活动记录模型
create_table "cars", force: :cascade do |t|
t.string "car_name"
t.integer "user_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
create_table "consumption_searches", force: :cascade do |t|
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
create_table "consumptions", force: :cascade do |t|
t.float "total_price"
t.float "kilometers"
t.string "shop"
t.float "liter_price"
t.float "total_liters"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.integer "car_id"
end
create_table "users", force: :cascade do |t|
t.string "email", default: "", null: false
t.string "encrypted_password", default: "", null: false
t.string "reset_password_token"
t.datetime "reset_password_sent_at"
t.datetime "remember_created_at"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.index ["email"], name: "index_users_on_email", unique: true
t.index ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true
end
- 汽车
belongs_to :users
和has_many :consumptions
- 用户
has_many :cars
,和has_many :consumptions through: :cars
- 消费
belong_to :car
和belongs_to :user
我在consumption_controller.rb中的创建方法
def create
@car = Car.find(params[:car_id])
@consumption = Consumptions.new(consumption_params)
@consumption.car = @car
if @consumption.save!
redirect_to car_consumptions_path, notice: 'consumption was successfully created.'
else
render :new
end
end
汽车控制器.rb
def show
@car = Car.find(params[:id])
@search = ConsumptionSearch.new(params[:search])
@consumptions = @search.date_range
@consumptions = @consumptions.order('created_at ASC').where(car_id: @car.id)
end
意见/消费/_form.html.erb
<%= simple_form_for car_consumptions_path do |f| %>
...
<% end %>
路线.rb
Rails.application.routes.draw do
devise_for :users
root to: "cars#index"
resources :cars do
resources :consumptions
end
end
铁路路线 | grep 消费
car_consumptions GET /cars/:car_id/consumptions(.:format) consumptions#index
POST /cars/:car_id/consumptions(.:format) consumptions#create
new_car_consumption GET /cars/:car_id/consumptions/new(.:format) consumptions#new
edit_car_consumption GET /cars/:car_id/consumptions/:id/edit(.:format) consumptions#edit
car_consumption GET /cars/:car_id/consumptions/:id(.:format) consumptions#show
PATCH /cars/:car_id/consumptions/:id(.:format) consumptions#update
PUT /cars/:car_id/consumptions/:id(.:format) consumptions#update
DELETE /cars/:car_id/consumptions/:id(.:format) consumptions#destroy
编辑
如果可以提供帮助,这是我在 HTML 中的内容:
<form novalidate="novalidate" class="simple_form /cars/1/consumptions" action="/cars/1/consumptions/new" accept-charset="UTF-8" method="post"><input name="utf8" type="hidden" value="✓"><input type="hidden" name="authenticity_token" value="0nwq/pQSXCU2ptBjbewTCBffPLpZZUPAj6/HPQTGtYd8cHz9zv8R/C/JYnXPDpKw5o3/vGlVtav2Sa2nSvgOQdQ==">
解决方案
试试这个:
<%= form_for [@cars, @consumptions] do |form| %>
...
<% end %>
或者
<%= form_with(model: [ @cars, @consumptions ]) do |form| %>
*** 更新:
resources :cars, shallow: true do
resources :consumptions
end
成形式:
<% = simple_form_for [@car, @consumption] do |f| %>
推荐阅读
- reactjs - Kendo React DatetimePicker 与波斯日历
- r - 删除不等于另一行但不考虑 R 中的 NA 的行
- mysql - mysql:仅当日期每天至少存在一次时才需要记录,该日期应从当前日期时间开始重复 4 天
- reactjs - React - 使用引导程序创建网格
- r - 什么是一种内存有效的方法来传播然后收集列?(见示例)
- nginx - Nginx 重写:如何在文件扩展后删除所有内容
- c# - C#将数组的每一行乘以一组因子
- javascript - jQuery 在单击事件上触发对 URL 的调用
- javascript - svg上的点击事件拒绝播放
- rust - 使用 Serde 反序列化时如何将特殊值转换为 Option::None?