2016-08-23 3 views
0

Я работаю над формой, где пользователь может выбрать страну, и там будет показан выбор и show.html.erb.Rails: Сохранить страну_избрать в базу данных

Я добавил 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 

И выполнил миграцию.

В моем контроллере я добавил это к моему Params:

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

Но я ничего не получаю .. В country_select документации, при использовании: «Простого использование подачи модели и атрибуте в качестве параметров: country_select (» user "," country ")"

Но я действительно не знаю, куда положить эту строку кода. Я попытался поместить его в свои создания, шоу и параметры .. И обновлен с помощью («Статья», «страна»)

Может кто-нибудь помочь мне подойти ближе? Я также разрабатываю установку .. Может быть, это может вызвать некоторые проблемы? Я работаю с рельсами 5.0.0

+0

почему вы определения 'country', как 'attr_accessor'? то, что вы говорите, указывает, что« страна »не сохраняется должным образом, проверка журнала рельсов, чтобы проверить, прошел ли его параметр через контроллер, будет полезно – kasperite

+0

Действительно ли оно сохраняется в стране? проверьте консоль рельсов ('rails console') с помощью:' Article.pluck (: country) ' –

ответ

1

-первых, избавиться от attr_accessor :country, как attr_accessor используется для определения атрибута для объекта модели, который не отображается с любого столбца в базе данных.

Чтобы ответить на ваш вопрос «Но я не знаю, где поставить эту строку коды .. Я пытался поставить его в моем создании, шоу и Params ..»

Вы должны поместить эту строку кода в свой вид формы. Первый атрибут - это имя модели (статья в вашем случае), а вторая - имя вашего атрибута (страна в вашем случае). Вы уже правильно сделали это, однако с:

<%= f.country_select :country %>

Вы должны убедиться, что эта форма на самом деле для Article так и должно быть:

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

Ха-ха .. Иисус. Да, ты совершенно прав.Избавьтесь от attr_accessor. Я сделал это, потому что мой выбор не сработает, если я этого не сделаю. Поэтому я проверил модель в github. Сейчас все работает. Не знаю, почему этого не произошло. Спасибо большое! – user2254488