0
我对轨道相当新,我不认为我完全理解路由。当我尝试访问编辑动作我得到以下错误: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+\-.][email protected][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
请帮助。
好吧,如果我改变了包含@store参数的路径。如何在给定模型has_one和belongs_to关系的控制器中定义该模型? – DaveG
定义控制器中的内容? – coreyward
对不起,我应该更清楚。我不确定如何定义@store变量。我明白了,谢谢你的帮助 – DaveG