Помощник по отсутствующему пути для рельсов Полиморфного объединения 3 - PullRequest
0 голосов
/ 07 февраля 2012

Я смотрел на многие учебные пособия, а не на то, как создать полиморфную ассоциацию в рельсах, но не могу заставить ее работать. На данный момент я следую учебнику Райана Бейтса по полиморфной ассоциации, и я продолжаю получать метод неопределенной ошибки для

Я пытаюсь добавить теги к своему сообщению в блоге и не хочу использовать плагин

Я получаю ошибку

undefined method `tags_path' for <class>

routes.rb

resources :blog do
  resources :tags
end

_form.html.erb для тегов

<%= form_for([@taggable, @tag]) do |f| %>

<div class="field">
  <%= f.label :name %><br />
  <%= f.text_field :name %>
</div>
<div class="actions">
  <%= f.submit %>
</div>

tag.rb

class Tag < ActiveRecord::Base
  belongs_to :taggable, :polymorphic => true
end

blog.rb

class Blog < ActiveRecord::Base
  has_many :tags, :as => :taggable
 end

Файл миграции

class CreateTags < ActiveRecord::Migration
  def self.up
    create_table :tags do |t|
      t.string :name
      t.string :taggable_type
      t.integer :taggable_id

      t.timestamps
    end
  end

  def self.down
     drop_table :tags
  end
end

tags_controller.rb

  def index
   @taggable = find_taggable
   @tags = @taggable.tags
  end

  def find_taggable
      params.each do |name, value|
          if name =~ /(.+)_id$/
              return $1.classify.constantize.find(value)
          end
      end
      raise ActiveRecord:NoRecord.new("Couldn\'t find it captain!")
  end

1 Ответ

1 голос
/ 07 февраля 2012

вы можете использовать polymorphic_url, details

polymorphic_url([@blog, @tag])

или просто использовать теговый камень, например https://github.com/mbleigh/acts-as-taggable-on

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