【问题标题】:Rails: Save country_select to databaseRails:将 country_select 保存到数据库
【发布时间】:2016-08-23 20:48:40
【问题描述】:

我正在制作一个表单,用户可以在其中选择国家/地区,然后会显示选项并显示.html.erb。

我已经像这样在我的表单中添加了 country_select

<div class="col-md-4">
  <div class="form-group">
    <%= f.country_select :country %>
 </div>

我的模型 article.rb 如下所示:

class Article < ActiveRecord::Base
    belongs_to :author
    has_many :article_article_categories
    has_many :categories, through: :article_article_categories

    validates :title, presence: true, length: { minimum: 3, maximum: 50 }
    validates :description, presence: true, length: { minimum: 10, maximum: 500 }
    validates :author_id, presence: true

    attr_accessor :country
end

选择有效,用户可以选择国家..完美!

但它不会出现在我的视图/show.html.erb.. 我试过这样:

<%= @article.country %>

因此我生成了一个迁移:

class AddCountryToArticles < ActiveRecord::Migration[5.0]
  def change
    add_column :article, :country, :string
  end
end

并运行迁移。

在我的控制器中,我将此添加到我的参数中:

def article_params
  params.require(:article).permit(:country, :title, :description, article_article_categories_ids: [])
end

但我什么也没得到.. 在 country_select 文档中,使用中: “简单地使用提供模型和属性作为参数: country_select("用户", "国家")"

但我真的不知道该把那行代码放在哪里.. 我试图把它放在我的创建、显示和参数中。并更新为(“文章”,“国家”)

有人可以帮我更近一步吗? 我也设计安装..也许这会造成一些麻烦? 我正在使用 rails 5.0.0

【问题讨论】:

  • 你为什么将country定义为attr_accessor?你所说的表明country没有正确保存,检查rails日志看它的参数是否通过控制器会有所帮助跨度>
  • 它真的存在于这个国家吗?检查您的 Rails 控制台 (rails console):Article.pluck(:country)

标签: ruby-on-rails ruby rubygems country


【解决方案1】:

首先,去掉attr_accessor :country,因为attr_accessor是用来为Model的对象定义一个属性的,它没有映射到数据库中的任何列。

回答你的问题“但是我真的不知道,把那行代码放在哪里..我试图把它放在我的创建、显示和参数中.. “

您必须将该行代码放在表单视图中。第一个属性是模型的名称(在您的情况下是文章),第二个是您的属性名称(在您的情况下是国家/地区)。但是,您已经通过以下方式正确完成了此操作:

&lt;%= f.country_select :country %&gt;

您必须确保此表单实际上是针对Article,所以它应该是:

<%= form_for @article do |f| %>
  <div>
  <%= f.country_select :country %>
  </div>
<% end %>

【讨论】:

  • 哈哈.. 耶稣。是的,你完全正确。摆脱 attr_accessor。我这样做是因为如果我不这样做,我的选择将不起作用。所以我在 github 上检查了模型。现在一切正常。不知道为什么一开始没有。非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-04
  • 2020-12-17
  • 2014-08-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多