2012-07-03 14 views
10

Yani şu hata yayınlanmaya devam: Ben tırmık yolları çalışan çalıştıRaylar Yönlendirme Hatası? 'Hayır rota maçları'

No route matches {:action=>"show", :controller=>"users"}

ve ben rota var olduğunu görebilirsiniz: Ben ziyaret deneyin

user   GET   /users/:id(.:format)  users#show 
       PUT   /users/:id(.:format)  users#update 
       DELETE  /users/:id(.:format)  users#destroy 

Ama her defasında sayfa "https://stackoverflow.com/users/1" (1 kullanıcı kimliği), yukarıdaki hatayı alıyorum. Herhangi bir fikir? Teşekkürler! İşte

var benim routes.rb:

İşte
SampleApp::Application.routes.draw do 
    root to: 'static_pages#home' 

    resources :users 
    resource :sessions, only: [:new, :create, :destroy] 


    match '/signup', to: 'users#new' 
    match '/signin', to: 'sessions#new' 
    match '/signout', to: 'sessions#destroy', via: :delete 

    match '/help', to: 'static_pages#help' 
    match '/about', to: 'static_pages#about' 
    match '/contact', to: 'static_pages#contact' 

var benim users_controller.rb:

class UsersController < ApplicationController 

    before_filter :signed_in_user, only: [:index, :edit, :update] 
    before_filter :correct_user, only: [:edit, :update] 

    def show 
    @user = User.find(params[:id]) 
    end 

    def new 
    @user = User.new 
    end 

    def create 
    @user = User.new(params[:user]) 
    if @user.save 
     sign_in @user 
     flash[:success] = "Welcome to the Paper Piazza!" 
     redirect_to @user 
    else 
     render 'new' 
    end 
    end 

    def edit 
    @user = User.find(params[:id]) 
    end 

    def update 
    if @user.update_attributes(params[:user]) 
     flash[:success] = "Profile updated" 
     sign_in @user 
     redirect_to @user 
    else 
     render 'edit' 
    end 
    end 

    def index 
    @users = User.paginate(page: params[:page]) 
    end 

    private 

    def signed_in_user 
     unless signed_in? 
     store_location 
     redirect_to signin_path, notice: "Please sign in." 
     end 
    end 

    def correct_user 
     @user = User.find(params[:id]) 
     redirect_to(root_path) unless current_user?(@user) 
    end 
end 
+0

sizin routes.rb dosya –

+0

'/ kullanıcıların/1 /' çalışıyor mu gösteriyor? – sarnold

+0

Hayır, '/ kullanıcıların/1 /' çalışmak için görünmüyor .. – user1497531

cevap

1

yazım hatası tespit deneyin:

root :to 'static_pages#home' 

(yerine root to:) ve son taşıyarak bloğun çizgisi. Ve eğer bir fark yaratan haberim olsun! Garip Ne

Sadece okuyan bir yönlendirme dosyası ile taze bir projeyi inşa olmasıdır:

>> r = Rails.application.routes ; true 
=> true 
>> r.recognize_path("https://stackoverflow.com/users/1") 
=> ActionController::RoutingError: No route matches "/users" 
:

RoutingTest::Application.routes.draw do 
    resources :users 
    root :to => "static_pages#home" 
end 

ben konsolda bu koştum, ben gördüğün aynı hata var Ben biraz eski bir projede aynı şeyi çalıştırdığınızda

... ama ben alıyorum:

>> r = Rails.application.routes ; true 
=> true 
>> r.recognize_path("https://stackoverflow.com/users/1") 
=> {:action=>"show", :controller=>"users", :id=>"1"} 

yüzden küçük confid var Sana söylediklerimin fark yaratacağını düşünüyorum. (Bunun dışında Rails.application.routes hilesi, konsoldaki yolları doğrulamak için kullanışlıdır!)

+0

Ayrılmış isimlere dikkat edin. Static_pages kullanmayın ve ne aldığınızı görün. – bcackerman

0

Benzer bir sorunla karşılaştım, yalnızca kök sayfasını döndüren yollar vardı, ancak rake routes'da görünecektir. root to: (routing) belirli bir ad ve tüm yollar için bir dost Geliştirici göre her zaman son olması gerekir. Bu kök herhangi bir arama dosyanızın başında olmalıdır söylüyor yönlendirme üzerine Raylar kılavuzun (http://guides.rubyonrails.org/routing.html#using-root bakınız) çelişmektedir. Bu kesinlikle benim için çalışmıyordu. İlginç ...