У меня даже есть возможности для публикации комментариев на верхнем уровне, но у меня проблемы с комментариями. Я использую полиморфные ассоциации, поэтому модель комментариев может применяться к статьям, профилям и изображениям. В каждом из трех случаев комментарий будет считать модель «комментарием».Никнейм Комментарии для меня не работают
Я хочу создать ответную ссылку рядом с каждым отдельным комментарием, который передается в «id» этого конкретного комментария на страницу комментариев «новый». Затем я хочу, чтобы метод комментариев «create» использовал этот id, @top_level_comment = Comment.find (id) и создавал новый дочерний элемент, используя параметры, которые пользователь указал в «новом» представлении комментариев, @ top_level_comment.children.create (params [: comment]), но я не знаю, как записать его в код.
Таким образом, пользователь начнет на статью шоу странице, которая имеет следующий контроллер:
def show
@article = Article.find(params[:id])
@commentable = Article.find(params[:id])
@comments = @commentable.comments
@comment = Comment.new
@title = @article.title
end
Затем он будет прокручиваться вниз на комментарии внизу, и видит, что есть ссылка ответа через статью шоу странице:
<div id="comment <%= comment.id %>">
<%= comment.title %>
| <%= link_to "Permalink", polymorphic_path([@commentable, comment]), :action => :show %>
| <%= link_to "Reply", polymorphic_path([@commentable, @comment]), :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 />
<%= @comment.children.count %><br /><br />
<%= render :partial => 'shared/comment', :collection => @comment.children %>
</div>
Именно эта линия, в частности, когда у меня возникают проблемы:
| <% = link_to «Ответить», polymorphic_path ([@ commentable, @comment]),: action =>: new%>
Как изменить это, чтобы делать то, что я хочу сделать, из описания в верхней части эта почта? Полиморфный путь не работает. Я думаю, что это не работает, потому что комментарий только работает со статьями, профилями и картинками, но не с комментариями. Как изменить путь, чтобы он переходил на страницу комментариев «new» при передаче идентификатора текущего комментария (comment.id)?
Кроме того, моя форма для добавления новых комментариев выглядит следующим образом:
<%= form_for([@commentable, @comment]) do |f| %>
<%#= render 'shared/error_messages', :object => f.object %>
<div class="field">
<%= f.label :title %><br />
<%= f.text_field :title %>
</div>
<div class="field">
<%= f.label :content %><br />
<%= f.text_area :content %>
</div>
<div class="actions">
<%= f.submit "Post Comment" %>
</div>
<% end %>
Вот что маршрутизация выглядит следующим образом:
resources :articles do
resources :comments
end
Здравствуйте, когда я следую за маршрутизацией Марка, я получаю это, когда Я стараюсь, чтобы просмотреть статью:
No route matches {:controller=>"comments", :action=>"create", :article_id=>#<Article id: 300, title: "Filler Title", content: "Sunt sit est incidunt et.", user_id: 6, created_at: "2010-09-08 17:42:10", updated_at: "2010-09-08 17:42:10">}
Добавлена следующая новая информация о September 16, 3:48 PST:
Вот форма, которая позволяет пользователю комментировать комментарий, но не работает, когда комментарий @commentable является комментарием.
1: <%= form_for([@commentable, @comment]) do |f| %>
2: <%#= render 'shared/error_messages', :object => f.object %>
3: <div class="field">
4: <%= f.label :title %><br />
комментарии контроллер «новый»
def new
@commentable = find_commentable
@comment = Comment.new
end
При ответе на комментарий, он идет выше, но она не знает, что @commentable есть, поэтому его значение равно нулю при ответе на комментарий. Как это сделать, чтобы @commentable был @комментами, от которых пользователь ответил? Вот ссылка, которая позволяет пользователю ответить на комментарий:
| <%= link_to "Reply", new_comment_path(comment.children.new) %>
Большое спасибо.
Здравствуйте, когда я использую следующее: <% = link_to "Ответить", polymorphic_path ([комментарий, comment.children.new]): действие =>: новый%> Затем я получаю эту ошибку: undefined method 'comment_comments_path 'для # <# <Класс: 0xb1ba480>: 0xb1b9134>. Я опубликовал свои маршруты.rb в главной теме. – Kelp
Привет. Вам нужно будет настроить маршрут. Я отредактирую свой ответ^Также удалите action =>: new, как в моем примере. :) – mark
Здравствуйте, я добавил маршруты (минус части карты, я использую Rails 3), и я получаю сообщение об ошибке, которое я добавлю на главный пост. – Kelp