【问题标题】:drop down select in form does not save data to database表单中的下拉选择不会将数据保存到数据库
【发布时间】:2016-03-29 09:02:58
【问题描述】:

这里是Ruby新手,所以请温柔一点。

我在表单中添加了一个下拉菜单,但是当我提交它时,它并没有保存到数据库中。所有其他字段都可以工作,我正在以与其他字段类似的方式制作下拉菜单。

我还使用以下命令将列添加到数据库:

rails g migration AddStatusToIdeas status:enum

rake db:migrate

app/models/idea.rb

class Idea < ActiveRecord::Base
  has_many :comments

  mount_uploader :picture, PictureUploader
  # {attr_accessor :Status}
  enum status: [ :Draft, :Published]
end

app/views/ideas/_form.html.erb

<%= form_for(@idea) do |f| %>
    <% if @idea.errors.any? %>
        <div id="error_explanation">
          <h2><%= pluralize(@idea.errors.count, "error") %> prohibited this idea from being saved:</h2>

          <ul>
            <% @idea.errors.full_messages.each do |message| %>
                <li><%= message %></li>
            <% end %>
          </ul>
        </div>
    <% end %>

    <div class="field">
      <%= f.label :name %><br>
      <%= f.text_field :name %>
    </div>
    <div class="field">
      <%= f.label :description %><br>
      <%= f.text_area :description %>
    </div>
    <div class="field">
      <%= f.label :status %><br>
      <%= f.select(:status, options_for_select([['Draft', 'Draft'],['Published', 'Published']])) %>
    </div>
    <div class="field">
      <%= f.label :picture %><br>
      <%= f.file_field :picture %>
    </div>
    <div class="actions">
      <%= f.submit %>
    </div>
<% end %>

【问题讨论】:

标签: ruby-on-rails forms drop-down-menu


【解决方案1】:

你有一个未经许可的参数status:

在 2016-03-29 12:20:39 +0300 为 127.0.0.1 开始 POST "/ideas" IdeasController#create 作为 HTML 参数处理: {"utf8"=>"✓", "authenticity_token"=>"pVM48/l0mTKe48pfg6TBytPO4eMNRmNBm1aDaHUvfQo=", "idea"=>{"name"=>"test for SO", "description"=>"test for SO", "status"=>"Published"}, "commit"=>"Create Idea"} 用户负载 (0.0ms) SELECT "users".* FROM "users" WHERE "users"."id" = 2 ORDER BY "users"."id" ASC LIMIT 10 不允许的参数: status (0.0ms) 开始事务 SQL (0.5ms) INSERT INTO "ideas" ("created_at", "description", "name", "updated_at") 值 (?, ?, ?, ?)[0m [["created_at", “2016-03-29 09:20:39.034503”],[“描述”,“SO 测试”], ["name", "test for SO"], ["updated_at", "2016-03-29 09:20:39.034503"]] (8.7ms) 提交事务重定向到 http://localhost:3000/ideas/9 已完成 302 发现时间为 24 毫秒 (ActiveRecord: 9.2ms)

修复你的控制器许可参数方法。

def idea_params
  params.require(:idea).permit(:name, :description, :status, :picture)
end

【讨论】:

  • params.require(:idea).permit(:name, :description, :status, :picture) 已修复,谢谢
猜你喜欢
  • 2016-05-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-19
  • 1970-01-01
  • 2019-01-22
相关资源
最近更新 更多