【问题标题】:HTML select results in nilHTML选择结果为零
【发布时间】:2016-01-07 21:25:15
【问题描述】:

我有一个模型User,其字符串属性为:location。我正在尝试为它创建一个从选项字段中选择的选项。

<%= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %>
  <select name="user[location]" form="user[location]">
    <option value="Earth">Earth</option>
    <option value="Mars">Mars</option>
    <option value="Jupiter">Jupiter</option>
  </select>
  <%= f.submit "Sign up" %>
<% end %>

但是当我提交表单时,User.last.locationnil。如果我使用 Rails f.select,我可以让它工作:

<%= f.select :location, options_for_select([['Earth'], ['Mars'], ['Jupiter']]) %>

为什么我的 html 表单不起作用?

User 是 Devise 生成的模型。这是我的应用程序控制器:

class ApplicationController < ActionController::Base
  before_action :configure_permitted_parameters, if: :devise_controller?

  protected

  def configure_permitted_parameters
    devise_parameter_sanitizer.for(:sign_up) << :location
  end
end

控制器动作直接内置在 gem 文件中,因此控制器派生自 here.

【问题讨论】:

  • 是所选位置没有持续存在于您的用户模型上的问题吗?表格的其余部分是什么样的?表单会转到哪个端点,该控制器操作是什么样的?
  • 表单的 HTML 代码是什么?
  • @yez 是的,它不会持续存在。我发布了完整的表格,并澄清了控制器。不过,我不确定您所说的端点是什么意思。
  • @arcyqwerty 我发布了完整的表格。
  • 你的选择框的名字是location,而应该是user[location]试试。

标签: html ruby-on-rails forms select devise


【解决方案1】:

我查看了 Rails 表单生成的 html,发现它起作用了。

<label for="user_location">Location</label>
<select id="user_location" name="user[location]">
  <option value="Earth">Earth</option>
  <option value="Mars">Mars</option>
  <option value="Jupiter">Jupiter</option>
</select>

我不知道为什么……我看到的唯一区别是 id 标签。

【讨论】:

    猜你喜欢
    • 2012-02-15
    • 2021-01-30
    • 1970-01-01
    • 1970-01-01
    • 2013-09-06
    • 2018-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多