【问题标题】:Rails 4.0.1 form.select prohibits form executionRails 4.0.1 form.select 禁止表单执行
【发布时间】:2013-12-25 03:43:36
【问题描述】:
<%= f.label :level %><br />
<%= f.select :level, options_for_select([["User", 1], ["Administrator", 2]]) %>

我有给定的选择下拉列表,表单返回302 Found 响应,但没有它,表单会更新。如果我尝试创建一条新记录,它正在制作中,但 level 字段为空白。由于我使用scaffold 生成它并且仅将输入类型从text 更新为select,因此看起来很奇怪。是什么原因造成的,我该如何解决?

控制器:

  def create
    @user = User.new(user_params)

    respond_to do |format|
      if @user.save
        format.html { redirect_to @user, notice: 'User was successfully created.' }
        format.json { render action: 'show', status: :created, location: @user }
      else
        format.html { render action: 'new' }
        format.json { render json: @user.errors, status: :unprocessable_entity }
      end
    end
  end

表格:

<%= form_for(@user) do |f| %>
  <div class="field">
    <%= f.label :name %><br>
    <%= f.text_field :name %>
  </div>
  <div class="field">
    <%= f.label :surname %><br>
    <%= f.text_field :surname %>
  </div>
  <div class="field">
    <%= f.label :level %><br />
    <%= f.select :level, options_for_select([["User", 1], ["Administrator", 2]]) %>
  </div>
  <div class="field">
    <%= f.label :password %><br>
    <%= f.password_field :password %>
  </div>
  <div class="field">
    <%= f.label :password_confirmation %><br>
    <%= f.password_field :password_confirmation %>
  </div>
  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>

【问题讨论】:

    标签: ruby-on-rails ruby forms http select


    【解决方案1】:

    嗯...看起来您的用户已成功保存,但您设置的 level 没有被保留。也许模型级别正在发生一些事情?我们可以看看你的User 模型吗?

    【讨论】:

    • 更新了帖子,以便您可以看到。任何地方都不会抛出任何错误,提交后表单会更新,并且通知说用户已成功更新,但 level 仍然是空白的。
    • 模型中只有has_secure_password。我什至还没有进入验证部分。
    • 这可能不是验证问题。例如,您可能不小心将level 设置为虚拟属性。然后它只会在请求期间设置在用户身上,然后立即忘记。
    • 好的,我刚刚重新生成了脚手架,它现在可以工作了。不过不知道是什么问题。
    • 它实际上可能不是您数据库中的一列,而只有 attr_accessible 在您的模型中。我们可以通过查看您的db/schema.rb 来确认这一点。无论如何,很高兴它现在可以工作了!
    猜你喜欢
    • 1970-01-01
    • 2020-03-14
    • 1970-01-01
    • 2019-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-07
    • 2012-08-18
    相关资源
    最近更新 更多