Функция создания модели Rails - PullRequest
0 голосов
/ 05 ноября 2011

Я использовал вложенный камень модели для создания рисунка, который может принимать теги. Теперь я добавил атрибут к моей модели Picture, чтобы он имел атрибут taglist. Когда я создаю новый тег, я хочу, чтобы это произошло

class TagsController < ApplicationController
  def create
    @tag = Tag.new(params[:id])
    if @tag.save
      taglist = picture.taglist
      taglist+=@tag.tagcontent
      @tag.picture.update_attributes(:taglist => taglist)
    end
  end
end

и по моим маршрутам

resources :pictures do
   resources :tags
end

Когда я создаю новый тег, в атрибуте taglist ничего не происходит, как будто ничего не случилось, почему?

Ответы [ 2 ]

1 голос
/ 05 ноября 2011

Трудно помочь из-за недостатка информации, но я вижу две возможные проблемы:

  1. Tag.new(params[:id]) не имеет смысла. Предполагая, что Tag наследуется от ActiveRecord :: Base, вам нужно передать ему хэш атрибутов (например, Tag.new(:name => 'mytag')). Вероятно, вы вообще не попали в блок if @tag.save из-за ошибок проверки. Кроме того, вам не нужно указывать идентификатор объекта, который вы хотите создать. База данных выбирает идентификатор.

  2. Внутри блока picture не определен в первой строке.

Почему бы не попробовать отладку с чем-то вроде:

if @tag.save
  taglist = picture.taglist
  taglist+=@tag.tagcontent
  @tag.picture.update_attributes(:taglist => taglist)
else
  p "ERRORS:"
  p @tag.errors.full_messages
end

Посмотрите, какие ошибки выводятся на вашу консоль.

0 голосов
/ 10 ноября 2011

Я определенно думаю, что изображение, вероятно, не определено в методе create контроллера. Можете ли вы показать нам вид, форму, которую вы используете для создания нового тега? Есть ли поле формы, через которое вы выбираете, какая фотография получает тег?

Пожалуйста, покажите нам ассоциацию и ваш взгляд на создание нового тега.

На самом деле, вместо того, чтобы готовить самостоятельно, я бы порекомендовал использовать:

Agile Web Development act_as_taggable_on_steroids

Это отличный плагин, чтобы сделать тегирование простым; в него встроено несколько изящных функций, включая поиск, облака тегов и т. д. Мы используем его в наших проектах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...