2010-09-10 18 views
3

Я использую полиморфизм для создания комментариев для моделей статей, профилей и фотографий. Вот вид на моей выставке страницы статьи:Использование polyorphic_path, получение ошибки «undefined method» merge »

<div id="comment <%= comment.id %>"> 
    <%= comment.title %> 
    | <%= link_to "Permalink", polymorphic_path(@commentable, comment), :action => :show %> 
    | <%= link_to "Reply", polymorphic_path(comment, @comment_child), :action => :new %> 
    | <%= link_to "Edit Comment", polymorphic_path(@commentable, comment), :action => :edit %> 
    | <%= link_to 'Delete Comment', [@commentable, comment], :confirm => "Are you sure?", :method => :delete %><br /> 
    <%= comment.content %><br /> 
    <%= comment.user.name %><br /><br /> 
    <%= render :partial => 'comments/comment', :collection => @comment.children %> 
</div> 

Вот статья «шоу» контроллер:

def show 
    @article = Article.find(params[:id]) 
    @commentable = Article.find(params[:id]) 
    @comments = @commentable.comments.paginate(:page => params[:page]) 
    @comment = Comment.new 
    @title = @article.title 
    end 

на этой линии появляется ошибка:

| <%= link_to "Permalink", polymorphic_path(@commentable, comment), :action => :show %> 

но я что эта ошибка присутствует во всех других строках, которые используют полиморфный_path. Он работает, если я обмениваю polyorphic_path на article_comment_path.

Большое спасибо за помощь.

ответ

11

Из определения полиморфного пути он ожидает один параметр, а затем необязательный хэш. Я хотел бы предположить, то, что вам нужно пройти как @commentable и комментарий в качестве одного из параметров в массиве

polymorphic_path([@commentable,comment])

+0

Почему я не могу upvote это больше! –