2012-02-07 48 views
0

我看過很多教程,以及如何在rails中創建多態關聯但不能使其工作。截至目前,我下面就多態關聯Ryan Bates tutorial,我不斷收到對多義關聯導軌缺少路徑助手3

錯誤未定義的方法我一個試圖標籤添加到我的博客文章,不想使用插件

我收到錯誤

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 
+0

Rails的是什麼版本的?這篇教程已經快三年了,這在Rails時代已經很長時間了。我所知道的最好的指南是[Rails Guide](http://guides.rubyonrails.org/association_basics.html),它涵蓋了多態關聯,但值得一讀的是它的(簡短)整體。 – 2012-02-07 02:29:31

+0

rails 2.另外我知道它是舊的,但其中一些概念與rails 3中的一樣,只是試圖找出錯誤出現的原因。生病檢查你已經發送的鏈接我只在目前的軌道api中查找 – coletrain 2012-02-07 02:38:23

回答

1

你可以使用一個polymorphic_url,details

polymorphic_url([@blog, @tag]) 

或只使用一個標籤的寶石一樣https://github.com/mbleigh/acts-as-taggable-on

+0

是在你的控制器中定義的@taggable,因爲如果它是零,也會發生同樣的情況。 – nodrog 2012-02-07 02:41:06

+0

如果我使用上述我將無法添加標籤照片視頻等。是@taggable是在我的控制器中定義。我上面更新了我的代碼。 – coletrain 2012-02-07 02:52:23

+0

想通了。在我的控制器中,我需要在@tag = Tag.new上面添加@taggable = find_taggable,並且一切正常。 – coletrain 2012-02-07 03:57:50