[英]Rails Nested Resource Routes
我是Rails的新手,我認為我不完全了解路由。 當我嘗試訪問編輯操作時,出現以下錯誤:
ActiveRecord::RecordNotFound in StoreController#show
Couldn't find Gear with id=edit
Rails.root: /Users/dave/rails_projects/outdoor
Application Trace | Framework Trace | Full Trace
app/controllers/store_controller.rb:7:in `show'
Request
Parameters:
{"user_id"=>"104",
"id"=>"edit"}
Show session dump
Show env dump
Response
Headers:
None
這是我的鏈接引發此錯誤的視圖:
<li><%= link_to "Store Appearance", edit_user_store_path(@user) %></li>
這是我的嵌套路線:
resources :users do
resources :store
end
這是我的控制器
class StoreController < ApplicationController
def index
@store = current_user.gears.paginate(page: params[:page])
end
def show
@gears = Gear.find(params[:id]).user.gears.paginate(page: params[:page])
end
def edit
end
def update
end
end
模型店
class Store < ActiveRecord::Base
attr_accessible :storeimage, :storename
belongs_to :user
validates :user_id, :presence => true
end
模型使用者
class User < ActiveRecord::Base
attr_accessible :first_name, :last_name, :email, :password, :password_confirmation, :userimage, :remove_userimage
has_secure_password
has_many :gears
has_many :comments, :dependent => :destroy
has_one :store, :dependent => :destroy
before_save :create_remember_token
require 'carrierwave/orm/activerecord'
mount_uploader :userimage, UserpicUploader
email_regex = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
validates :first_name, presence: true,
length: {:maximum => 50 }
validates :last_name, presence: true,
length: {:maximum => 50 }
validates :email, presence: true,
format: {:with => email_regex},
uniqueness: {:case_sensitive => false}
validates :password, presence: true,
confirmation: true,
length: {within: 6..40}
include Tire::Model::Search
include Tire::Model::Callbacks
def name
first_name + " " + last_name
end
private
def create_remember_token
self.remember_token = SecureRandom.urlsafe_base64
end
end
請幫忙。
當您訪問嵌套在user
下的store
對象時,需要在URL中傳遞user_id
和id
參數,因此您的URL應該如下所示:
/users/1/stores/3/edit
與:
/users/1/stores/edit
您還需要將這兩個都作為參數傳遞給路徑幫助器,即:
edit_user_store_path(@user, @store)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.