1
除了设计,所有链接都工作正常。如果我尝试点击注册或登录,则需要我注册/登录页面,对不对?链接重定向到错误的视图路径
从URL看起来很正常。 localhost:3000/users/sign_up
但看法是错误的。它显示的是配置文件视图,而不是设计注册/登录视图。
路由代码:
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
那太奇怪了 – Raymond
在'config/routes.rb'文件中排序在Rails中很重要。我认为设计已经声明了'users /:id'路径,所以它覆盖了你的'profile'路径。 –