2014-02-06 3 views
0

Я прочитал кучу вопросов, но ни один из них не помогает мне в этой проблеме. Я пытаюсь создать форму для создания новых форумов, но не могу заставить их использовать правильный идентификатор категории.Rails collection_select pass id

<%= f.collection_select :category_id, Category.all, :id, :name %> 

Это создает новый форум, но идентификатор не является идентификатором категории из выпадающего списка. Вот форум модели

def new 
    @forum = Forum.new 
    end 

    def create 
    @forum = Forum.new(forum_params) 
    if @forum.save 
     redirect_to root_url 
    else 
     render 'new' 
    end 
    end 

    private 

    def forum_params 
     params.require(:forum).permit(:category_id, :name, :description) 
    end 

end 

Не совсем уверен, что я делаю неправильно здесь. Это как-то связано с внешним ключом? Любая помощь будет действительно оценена.

UPDATE

Форум Модель

class Forum < ActiveRecord::Base 
    belongs_to :category 
    has_many :topics, dependent: :destroy 
end 

Категория Модель

class Category < ActiveRecord::Base 
    has_many :forums, dependent: :destroy 
end 
+0

Пожалуйста, включите ваш код модели и категории моделей –

+0

Хорошо, я добавил их. –

+0

Значение ': category_id' нового форума -' nil' или какое-либо другое случайное значение? –

ответ

0

Там не в основном в Forum модели нет category_id.

Вот что вы можете сделать, чтобы устранить эту проблему. Пробег:

rails dbconsole 
.schema 

Проверьте, есть ли у вас category_id или нет. Если нет, создайте для этого новую миграцию.

Ваш исходный код верен. По какой-то причине я неправильно понял, что ваш collection_select уже привязан к модели.

+0

Это дает мне ошибку undefined method 'merge 'для: name: Symbol Это как-то связано с моей формой_for (@forum). Я думаю, что я посмотрю, что я могу сделать, чтобы исправить это. –

+0

Если я изменяю f.collection_select на collection_select, я не получаю сообщение об ошибке, но категория форума по-прежнему не та, что находится в раскрывающемся списке, это то же самое, что и идентификатор форума. –

+0

Мой плохой, похоже, что есть что-то с вашими отношениями. Позвольте мне изменить свой ответ. – beautifulcoder

Смежные вопросы