【问题标题】:no username field even though username in table即使表中的用户名也没有用户名字段
【发布时间】:2013-01-28 12:50:17
【问题描述】:

我正在关注 Railscast 第 235 集,其中 Ryan Bates 将omniauth 与 Devise 集成。单击 Twitter 登录后,他的应用程序将他带回应用程序中的一个表单,他必须在电子邮件字段中输入电子邮件地址才能完成注册。 (由于他编写会话代码的方式,他的用户名已经填写在表格中)。表格如下图所示。请注意他如何使用 f.email_field 来输入他的用户名,即使他在表中有一个用户名字段。他的应用在视频中成功运行。

我已经下载了他的源代码,但是当我尝试运行它时,我无法完成注册,除非我在电子邮件字段中输入电子邮件以及在用户名字段中输入电子邮件。因此,我更改了代码以在注册表中添加f.username_field

<div class="field"><%= f.label :username %><br />
  <%= f.username_field :username %></div>

但我收到了这个错误

undefined method `username_field' for #<ActionView::Helpers::FormBuilder:0x007fc058a242c8>

:username 列在 User.rb 模型的可访问属性中,这是用户表,带有一个用户名字段,所以我不知道为什么我会得到“未定义的方法”用户名字段。该应用程序只允许我输入用户名标签所在的电子邮件地址

 create_table "users", :force => true do |t|
    t.string   "email",                  :default => "", :null => false
    t.string   "encrypted_password",     :default => "", :null => false
    t.string   "reset_password_token"
    t.datetime "reset_password_sent_at"
    t.datetime "remember_created_at"
    t.integer  "sign_in_count",          :default => 0
    t.datetime "current_sign_in_at"
    t.datetime "last_sign_in_at"
    t.string   "current_sign_in_ip"
    t.string   "last_sign_in_ip"
    t.datetime "created_at",                             :null => false
    t.datetime "updated_at",                             :null => false
    t.string   "username"
    t.string   "provider"
    t.string   "uid"
  end

您能想出可能发生这种情况的原因吗?

【问题讨论】:

    标签: ruby-on-rails validation email email-validation


    【解决方案1】:

    email_field 可能正在使用定义格式的助手。
    将“email_field”视为 text_field 或 date_field 中的“email_field”,但 email_field 表示具有用于电子邮件地址的格式规则的字段。

    因此,除非您定义自己的助手,否则您不能以相同的方式选择模型属性和“_field”之一。

    因此,不要将email_field 更改为username_field,而是将其更改为text_field

    【讨论】:

    • 他在创建设计用户后将用户名添加到表中。也许 devise 为 email_field 创建了帮助器,但由于当时用户名不存在,所以它没有为它提供一个。
    • 解决了这个问题。谢谢,我会在 siete minutos 上投票给你
    猜你喜欢
    • 1970-01-01
    • 2020-12-24
    • 1970-01-01
    • 2014-03-17
    • 2011-06-04
    • 2021-04-09
    • 2021-02-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多