做一个带评论的小型演示迷你博客应用程序。使用ROR和HAML。我想用AJAX创建注释,所以我写了create.js.haml。如果在创建期间有任何错误,我也希望出现错误。
create.js.haml
:plain
if #{@comment.errors.any?} {
$("#CommentError").html("#{escape_javascript(render(:partial => "error"))}");
$("#CommentError").attr("style", "display: inline");
} else {
$("#CommentsTable").append("#{escape_javascript(render(@comment))}");
$("#CommentError").attr("style", "display: false");}
这不起作用。条件评估为true
或false
,但代码未执行。但是如果我在create.js.haml中将条件的任何部分放在它上面就可以了。
这可以防止出现错误:
:plain
$("#CommentError").html("#{escape_javascript(render(:partial => "error"))}");
$("#CommentError").attr("style", "display: inline");
如果没有错误,我需要添加注释:
:plain
$("#CommentsTable").append("#{escape_javascript(render(@comment))}");
$("#CommentError").attr("style", "display: false");
这是观点,但我不认为问题存在:
%p
%strong Title:
= @post.title
%p
%strong Text:
= @post.text
%h3 Comments:
.CommentsArea
= render @post.comments
#CommentError{:style => 'display: none'}
%h2 Add a comment:
= render "comments/form"
= link_to 'Back', posts_path
|
= link_to 'Edit', edit_post_path(@post)
答案 0 :(得分:2)
也许这会奏效(我现在不能自己检查)
- if @comment.errors.any?
:plain
$("#CommentError").html("#{escape_javascript(render(:partial => "error"))}");
$("#CommentError").attr("visible", "true");
- else
:plain
$("#CommentsTable").append("#{escape_javascript(render(@comment))}");
$("#CommentError").attr("visible", "false");
答案 1 :(得分:0)
我认为你在这里混合使用Ruby和Javascript太多了。试试这个。
if @comment.errors.any?
:javascript
$("#CommentError").html("#{escape_javascript(render(:partial => "error"))}");
$("#CommentError").attr("visible", "true");
else
:javascript
$("#CommentsTable").append("#{escape_javascript(render(@comment))}");
$("#CommentError").attr("visible", "false");
有关更多文档:http://haml.info/docs/yardoc/file.REFERENCE.html#javascript-filter