【发布时间】:2014-03-09 19:41:31
【问题描述】:
我正在使用 Rails 4,我的注册表单中有两个 select 输入。当我做出选择并填写表格的其余部分时,我收到与这些输入相关的两个错误,表明它们不能为空。如果它们不是空白,我不确定为什么会收到这些错误...
以下是我正在使用的相关宝石:
宝石文件
gem 'bootstrap_form'
gem 'twitter_cldr'
这是我正在使用的字段的部分内容:
app/views/users/_fields.html.erb
<%= render 'shared/error_messages', object: f.object %>
<%= f.text_field :name, hide_label: true, placeholder: 'name' %>
<%= f.text_field :email, hide_label: true, placeholder: 'email' %>
<%= f.select :language1, TwitterCldr::Shared::Languages.all.values %>
<%= f.select :language2, TwitterCldr::Shared::Languages.all.values %>
<%= f.password_field :password, hide_label: true, placeholder: 'password' %>
<%= f.password_field :password_confirmation, hide_label: true, placeholder: 'confirm password' %>
users表的列定义如下:
db/schema.rb
...
create_table "users", force: true do |t|
...
t.string "language1"
t.string "language2"
...
end
这是我的用户模型中的验证:
app/models/user.rb
validates :language1, presence: true
validates :language2, presence: true
我的想法:
我在想的是下拉列表中选择的内容可能不是字符串? 那或者我已经看到,在某些情况下,您必须在 select 方法中指定表单所针对的对象,如下所示:
<%= f.select :user, :language1, TwitterCldr::Shared::Languages.all.values %>
但我对这种方法的问题是这些字段是局部的,并且对象是作为本地传入的,所以当我这样做时:
<%= f.select f.object, :language1, TwitterCldr::Shared::Languages.all.values %>
我收到关于 User 类的未定义方法“to_sym”的错误
有人有什么建议吗???谢谢!
【问题讨论】:
-
您能否检查您的开发日志或添加调试语句以查看
params[:language1]和params[:language2]在提交表单后到达您的控制器后的值是多少?
标签: ruby-on-rails forms ruby-on-rails-4