我正在关注 Railscast 第 235 集,其中 Ryan Bates 将omniauth 与 Devise 集成。单击 Twitter 登录后,他的应用程序会将他带回到应用程序中的一个表单,他必须在电子邮件字段中输入电子邮件地址才能完成注册。(由于他编写会话代码的方式,他的用户名已经填写在表格中)。表格如下图所示。请注意他如何使用 f.email_field 来输入他的用户名,即使他在表中有一个用户名字段。他的应用程序在视频中成功运行。
我已经下载了他的源代码,但是当我尝试运行它时,我无法完成注册,除非我在电子邮件字段中输入电子邮件以及在用户名字段中输入电子邮件。因此,我更改了代码以将 af.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
你能想出为什么会发生这种情况的原因吗?