【问题标题】:Using devise current_user使用设计 current_user
【发布时间】:2014-06-18 13:55:47
【问题描述】:

例如,我有一个用户和一个地址,关系如下:

class User < ActiveRecord::Base
  devise :database_authenticatable, :registerable,
     :recoverable, :rememberable, :trackable, :validatable

  has_one :address
end


class Address< ActiveRecord::Base
  belongs_to :user
end

现在当我创建一个地址对象时,我希望能够通过 current_user id 并将其保存到地址模型中,所以在我的控制器中我有

before_filter :authenticate_user!

def new
  @address= current_user.address.new
end

def create
  @address= current_user.address.new(address_params)
   if @address.save
     redirect_to root_path, notice: 'Address Successfully Created'
  else
    render action: 'new'
  end
end

private

def address_params
  params.require(:address).permit(:id, :user_id, :add_1, :add_2, :add_3)
end

我目前无法访问新操作,因为我遇到的错误是

undefined method `new' for nil:NilClass

我错过了什么?

【问题讨论】:

  • 你试过build而不是new吗?
  • 仍然出现同样的错误(未定义的方法构建),是不是只有新操作让我失望了?
  • 我认为 create 会有相同的结果。

标签: ruby ruby-on-rails-4 devise associations


【解决方案1】:

我认为你应该这样做:

def new
  @address = current_user.build_address
end

create 操作中也是如此

更多信息here

【讨论】:

    猜你喜欢
    • 2012-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-10
    • 2012-03-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多