2016-02-15 44 views
1

除了设计,所有链接都工作正常。如果我尝试点击注册或登录,则需要我注册/登录页面,对不对?链接重定向到错误的视图路径

从URL看起来很正常。 localhost:3000/users/sign_up但看法是错误的。它显示的是配置文件视图,而不是设计注册/登录视图。

enter image description here

路由代码:

Rails.application.routes.draw do 

    resources :questions 

    get '/users/:id' => 'profile#profile' 
    devise_for :users 
    root 'home#index' 
end 

资料控制器:

class ProfileController < ApplicationController 
    def profile 
    end 
end 

用户模型:

class User < ActiveRecord::Base 
    has_many :questions 
    # Include default devise modules. Others available are: 
    # :confirmable, :lockable, :timeoutable and :omniauthable 
    devise :database_authenticatable, :registerable, 
     :recoverable, :rememberable, :trackable, :validatable 
end 

问题模型

class Question < ActiveRecord::Base 
    belongs_to :user 
end 

它一开始并没有这样做,我认为这个错误发生在编辑问题文件夹中的show.html.erb视图时。

显示代码(问题):

<% @questions.each do |q| %> 
    <% if user_signed_in? %> 
     <% if q.id == current_user.id %> 
      <%= link_to 'Edit', edit_question_path(@question) %> 
     <% end %> 
    <% end %> 
<% end %> 

问题控制器:

class QuestionsController < ApplicationController 
    before_action :set_question, only: [:show, :edit, :update, :destroy] 

    respond_to :html 

    def index 
    @questions = Question.all 
    respond_with(@questions) 
    end 

    def show 
    @questions = Question.all 
    respond_with(@question) 
    end 

    def new 
    @question = Question.new 
    respond_with(@question) 
    end 

    def edit 
    end 

    def create 
    @question = Question.new(question_params) 
    @question.save 
    respond_with(@question) 
    end 

    def update 
    @question.update(question_params) 
    respond_with(@question) 
    end 

    def destroy 
    @question.destroy 
    respond_with(@question) 
    end 

    private 
    def set_question 
     @question = Question.find(params[:id]) 
    end 

    def question_params 
     params.require(:question).permit(:title, :description, :image_url) 
    end 
end 

回答

0

尝试把该get '/users/:id' => 'profile#profile'devise_for :users线以下。

+0

那太奇怪了 – Raymond

+0

在'config/routes.rb'文件中排序在Rails中很重要。我认为设计已经声明了'users /:id'路径,所以它覆盖了你的'profile'路径。 –