簡體   English   中英

Rails嵌套資源路線

[英]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_idid參數,因此您的URL應該如下所示:

/users/1/stores/3/edit

與:

/users/1/stores/edit

您還需要將這兩個都作為參數傳遞給路徑幫助器,即:

edit_user_store_path(@user, @store)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM