【发布时间】:2017-07-05 13:10:48
【问题描述】:
这几天我一直在用头撞这个......
我的 routes.rb 文件如下所示:
resources :vehicles do
member do
resources :services
end
end
我的 service.rb 文件显示:
class Service < ActiveRecord::Base
belongs_to :vehicle
end
我的 vehicle.rb 文件显示:
class Vehicle < ActiveRecord::Base
has_many :services, :dependent => :destroy
end
这里是 services_controller.rb
class ServicesController < ApplicationController
def index
@vehicle = Vehicle.find(params[:id])
@services = @vehicle.services.order('created_at DESC')
end
def show
@vehicle = Vehicle.find(params[:id])
@service = Vehicle.services.find(params[:service_id])
end
def new
@vehicle = Vehicle.find(params[:id])
@service = @vehicle.services.new
end
def create
@vehicle = Vehicle.find(params[:id])
@service = @vehicle.services.build(service_params)
if @service.save
redirect_to @vehicle
else
render :new
end
end
private
def service_params
params.require(:service).permit(:service_option, :odometer,
:current_service, :price, :comments, :next_service)
end
end
这里是服务#index
<h1>Services</h1>
<% @services.each do |s| %>
<%= link_to "Details", service_path(s) %>
<%= s.created_at %>
<%= s.service_option %>
<%= s.odometer %><br>
<% end %>
点击“详情”链接或手动输入网址
给我系统地相同的路由错误:
ActiveRecord::RecordNotFound in ServicesController#show 找不到“id”=7 的车辆
Extracted source (around line #10):
def show
@vehicle = Vehicle.find(params[:id])
@service = Vehicle.services.find(params[:service_id])
end
它将服务 ID 传递给车辆对象/变量,我不知道为什么!
谢谢一百万!
【问题讨论】:
标签: ruby-on-rails ruby routes nested