Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 要获得一个包含地址、头像、电话号码等附加字段的个人资料页面,我缺少什么_Ruby On Rails_Ruby_Devise - Fatal编程技术网

Ruby on rails 要获得一个包含地址、头像、电话号码等附加字段的个人资料页面,我缺少什么

Ruby on rails 要获得一个包含地址、头像、电话号码等附加字段的个人资料页面,我缺少什么,ruby-on-rails,ruby,devise,Ruby On Rails,Ruby,Devise,我使用RubyonRails并使用Desive进行登录和注册。注册后,我收到以下错误消息: NoMethodError in Devise::SessionsController#create undefined method profile_path' for #<Devise::SessionsController:0x007f9425b1f9c0> 应用程序\u控制器.rb class ProfilesController < ApplicationController

我使用RubyonRails并使用Desive进行登录和注册。注册后,我收到以下错误消息:

NoMethodError in Devise::SessionsController#create undefined method profile_path' for #<Devise::SessionsController:0x007f9425b1f9c0>
应用程序\u控制器.rb

class ProfilesController < ApplicationController
  before_action :set_profile, only: [:show, :edit, :update, :destroy]

 def profile

  end
  # GET /profiles
  # GET /profiles.json
  def index
    @profiles = Profile.all
  end

  # GET /profiles/1
  # GET /profiles/1.json
  def show
  end

  # GET /profiles/new
  def new
    @profile = Profile.new
  end

  # GET /profiles/1/edit
  def edit
   @profile = Profile.find_by user_id: current_user.id
   @attributes = Profile.attribute_names - %w(id user_id created_at updated_at)
  end

  # POST /profiles
  # POST /profiles.json
  def create
    @profile = Profile.new(profile_params)

    respond_to do |format|
      if @profile.save
        format.html { redirect_to @profile, notice: 'Profile was successfully created.' }
        format.json { render :show, status: :created, location: @profile }
      else
        format.html { render :new }
        format.json { render json: @profile.errors, status: :unprocessable_entity }
      end
    end
  end

  # PATCH/PUT /profiles/1
  # PATCH/PUT /profiles/1.json
  def update
    respond_to do |format|
      if @profile.update(profile_params)
        format.html { redirect_to @profile, notice: 'Profile was successfully updated.' }
        format.json { render :show, status: :ok, location: @profile }
      else
        format.html { render :edit }
        format.json { render json: @profile.errors, status: :unprocessable_entity }
      end
    end
  end

  # DELETE /profiles/1
  # DELETE /profiles/1.json
  def destroy
    @profile.destroy
    respond_to do |format|
      format.html { redirect_to profiles_url, notice: 'Profile was successfully destroyed.' }
      format.json { head :no_content }
    end
  end

  private
    # Use callbacks to share common setup or constraints between actions.
    def set_profile
      @profile = Profile.find(params[:id])
    end

    # Never trust parameters from the scary internet, only allow the white list through.
    def profile_params
      params[:profile]
    end
end
class ApplicationController < ActionController::Base
 # Prevent CSRF attacks by raising an exception.
 # For APIs, you may want to use :null_session instead.
 protect_from_forgery with: :exception
 before_filter :configure_permitted_parameters, if: :devise_controller?

protected

 def configure_permitted_parameters
   devise_parameter_sanitizer.for(:sign_up) << :name
   devise_parameter_sanitizer.for(:account_update) << :name
 end

  def after_sign_in_path_for(resource)
    profile_path(resource)
  end

  def after_sign_up_path_for(resource)
    profile_path(resource)
  end
end
class Profile < ActiveRecord::Base
    belongs_to :user
end
class User < ActiveRecord::Base
  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable 

  has_many :pins, dependent: :destroy



  validates :name, presence: true
has_one :profile
    before_create :build_profile #creates profile at user registration
end
Rails.application.routes.draw do
  resources :profiles, only: [:edit]

  resources :pins

  devise_for :users
  #devise_for :installs
  root "pins#index"
  get "about" => "pages#about"

谢谢。

您需要在
application\u controller.rb
中使用复数:
profiles\u path
而不是
profile\u path
,要添加新字段,您必须编写迁移。我看不出你面临什么错误或问题。你能解释一下你的问题吗?你的错误信息在哪里?我很抱歉忘了发布错误:Desive::SessionController#为提取的源创建未定义的方法
profile_path'(在第15行附近):13 14 15 16 17 18 def在为(资源)profile#path(资源)签名后(资源)Rails.root:/Users/DKL/Desktop/trueque应用程序跟踪| Framework跟踪|完整跟踪应用程序/控制器/应用程序|控制器。rb:15:in
在登录(资源)Rails.root之后