Jak*_*ith 1 forms ruby-on-rails ruby-on-rails-4
我正在使用Rails 4 select
,我的注册表单中有两个输入.当我做出选择并填写表单的其余部分时,我得到两个与这些输入相关的错误,表示它们不能为空.如果不是空白,我不知道为什么我会收到这些错误...
以下是我正在使用的相关宝石:
的Gemfile
gem 'bootstrap_form'
gem 'twitter_cldr'
Run Code Online (Sandbox Code Playgroud)
这是我正在使用的字段的部分:
应用程序/视图/用户/ _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' %>
Run Code Online (Sandbox Code Playgroud)
users表的列定义如下:
DB/schema.rb
...
create_table "users", force: true do |t|
...
t.string "language1"
t.string "language2"
...
end
Run Code Online (Sandbox Code Playgroud)
这是我的用户模型中的验证:
应用程序/模型/ user.rb
validates :language1, presence: true
validates :language2, presence: true
Run Code Online (Sandbox Code Playgroud)
我在想的是,在下拉列表中选择的内容可能不是字符串?或者我已经看到,在某些情况下,您必须在select方法中指定表单所针对的对象,如下所示:
<%= f.select :user, :language1, TwitterCldr::Shared::Languages.all.values %>
Run Code Online (Sandbox Code Playgroud)
但我对这种方法的问题是这些字段是局部的,对象是作为本地传入的,所以当我这样做时:
<%= f.select f.object, :language1, TwitterCldr::Shared::Languages.all.values %>
Run Code Online (Sandbox Code Playgroud)
我得到一个关于我的类的未定义方法'to_sym'的错误 User
任何人都有任何建议??? 谢谢!
Tom*_*ats 11
这很可能是控制器错误.确保强params接受属性:
params.require(:user).permit(:name, :email, :password, :language1, :language2)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3813 次 |
最近记录: |