我正在处理一个用户可以选择国家/地区的表单,然后会显示选项并显示show.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(“user”,“country”)“
但我真的不知道,在哪里放这行代码.. 我试图将它放在我的创建,展示和参数中..并更新(“文章”,“国家”)
有人能帮我走近一步吗? 我也设计安装..也许这可能会导致一些麻烦? 我正在使用rails 5.0.0
答案 0 :(得分:1)
首先,删除attr_accessor :country
,因为 attr_accessor用于定义Model的对象的属性,该属性未映射到数据库中的任何列。
回答你的问题&#34; 但是我真的不知道,在哪里放置那行代码..我试着把它放在我的创建,展示和参数中...... &#34;
您必须在表单视图中放置该行代码。第一个属性是模型的名称(在您的案例中为文章),第二个属性是您的属性的名称(在您的情况下为国家/地区)。您已经使用以下方式正确完成了此操作:
<%= f.country_select :country %>
您必须确保此表单实际上适用于Article
,因此它应该是:
<%= form_for @article do |f| %>
<div>
<%= f.country_select :country %>
</div>
<% end %>