試圖在我的reddit類型應用程序中使用Ajax來創建一些漂亮的即時顯示評論。儘管如此,仍然試圖獲得一些ruby語法。我在將我的表單部分與我的評論控制器集成時遇到問題。我來了一個NameError,特別是:使用Ajax/Rails創建評論 - 名稱錯誤
未定義的局部變量或方法'後」的#<#:0x007f8e36d05d88>
我有一些模糊的想法如何解決它(其中地方我在初始化變量評論控制器?),但無法應用工作解決方案。
這裏是我對應的_form.html.rb部分我的評論。
<%= form_for [post, post.comments.build], remote: true do |f| %>
<% if post.errors.any? %>
<div class="alert alert-danger">
<h4>There are <%= pluralize(post.errors.count, "error") %>.</h4>
<ul>
<% post.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<%= form_group_tag(post.errors[:body]) do %>
<%= f.label :body %>
<%= f.text_area :body, rows: 1, class: 'form-control', placeholder: "Enter comment" %>
<% end %>
<div class="form-group">
<%= f.submit "Save", class: 'btn btn-success' %>
</div>
<% end %>
這裏是我的comments_controller.rb
class CommentsController < ApplicationController
def create
@post = Post.find(params[:post_id])
@comments = @post.comments
@comment = current_user.comments.build(comment_params)
@comment.post = @post
@new_comment = Comment.new
authorize @comment
if @comment.save
flash[:notice] = "Comment was saved"
else
flash[:error] = "There was an error saving the comment. Please try again."
end
respond_to do |format|
format.html
format.js
end
def destroy
@post = Post.find(params[:post_id])
@comment = @post.comments.find(params[:id])
authorize @comment
if @comment.destroy
flash[:notice] = "Comment was removed."
else
flash[:error] = "Comment couldn't be deleted. Try again"
end
respond_to do |format|
format.html
format.js
end
end
private
def comment_params
params.require(:comment).permit(:body)
end
end
任何有建設性的意見表示讚賞。請讓我知道,如果你需要額外的意見不同的目錄。先謝謝你!
*從評論螺紋(評論/ create.js.erb文件)
<% if @comment.valid? %>
$('.js-comments').prepend("<%= escape_javascript(render(@comment)) %>");
$('.new-comment').html("<%= escape_javascript(render partial: 'comments/form', locals: { post: @post, comment: @new_comment }) %>");
<% else %>
$('.new-comment').html("<%= escape_javascript(render partial: 'comments/form', locals: { post: @post, comment: @comment }) %>");
<% end %>
你如何調用一個部分?向我們顯示該代碼。 – Pavan
完成。請參閱上文。 – Kris