bga*_*oci 9 ruby ruby-on-rails
因为我总是打字,所以我对轨道和编程很新,所以很容易.提前致谢.
我已成功地遵循Ryan Bates的初始教程,了解如何在15分钟内构建博客.如果您不知道本教程将指导您创建帖子并允许对这些帖子发表评论.它甚至通过在帖子show.html.erb页面上创建和显示评论来介绍AJAX.一切都很棒.
这是打嗝,当Ryan带你通过本教程时他会清除comments_controller并只显示创建注释的代码.我试图添加编辑和销毁评论的能力.似乎无法让它工作,不断删除实际的帖子而不是评论(日志显示我一直向PostsController发送DELETE请求).这是我的代码:
class CommentsController < ApplicationController
def create
@post = Post.find(params[:post_id])
@comment = @post.comments.create!(params[:comment])
respond_to do |format|
format.html { redirect_to @post }
format.js
end
end
def destroy
@comment = Comment.find(params[:id])
@comment.destroy
respond_to do |format|
format.html { redirect_to(posts_url) }
format.xml { head :ok }
end
end
end
Run Code Online (Sandbox Code Playgroud)
/views/posts/show.html.erb
<%= render :partial => @post %>
<p>
<%= link_to 'Edit', edit_post_path (@post) %> |
<%= link_to 'Destroy', @post, :method => :delete, :confirm => "Are you sure?" %> |
<%= link_to 'See All Posts', posts_path %>
</p>
<h2>Comments</h2>
<div id="comments">
<%= render :partial => @post.comments %>
</div>
<% remote_form_for [@post, Comment.new] do |f| %>
<p>
<%= f.label :body, "New Comment" %><br/>
<%= f.text_area :body %>
</p>
<p>
<%= f.submit "Add Comment" %></p>
<% end %>
Run Code Online (Sandbox Code Playgroud)
/views/comments/_comment.html.erb
<% div_for comment do %>
<p>
<strong>Posted <%= time_ago_in_words(comment.created_at) %> ago
</strong><br/>
<%= h(comment.body) %><br/>
<%= link_to 'Destroy', @comments, :method => :delete, :confirm => "Are you sure?" %>
</p>
<% end %>
Run Code Online (Sandbox Code Playgroud)
的routes.rb
ActionController::Routing::Routes.draw do |map|
map.resources :posts, :has_many => :comments
map.connect ':controller/:action/:id'
map.connect ':controller/:action/:id.:format'
end
Run Code Online (Sandbox Code Playgroud)
Ton*_*not 12
meagar在正确的道路上,但由于这是一个嵌套的路线,你必须做:
<%= link_to 'Destroy', [@post, comment], ... %>
所以,您正在传递评论和帖子,并让铁路根据您的定义确定路线.
| 归档时间: |
|
| 查看次数: |
3024 次 |
| 最近记录: |