Javascript 我应该如何集成AJAX?
我的update.js.erb文件中有一段非常混乱的代码,它位于我的视频目录中。每次我添加新的注释标题时,都会调用它:Javascript 我应该如何集成AJAX?,javascript,jquery,ruby-on-rails,ruby,ruby-on-rails-3,Javascript,Jquery,Ruby On Rails,Ruby,Ruby On Rails 3,我的update.js.erb文件中有一段非常混乱的代码,它位于我的视频目录中。每次我添加新的注释标题时,都会调用它: $(".comments_div").html('<% @video.comment_titles.each do |comment_title| %> \ <div class ="comment_column_<%= case @video.comment_titles.count when 1 "wide"
$(".comments_div").html('<% @video.comment_titles.each do |comment_title| %> \
<div class ="comment_column_<%=
case @video.comment_titles.count
when 1
"wide"
when 2
"medium"
when 3
"narrow"
else
return
end
%>"> \
<% unless @video.comment_titles.count == 0 %> \
<div id = "comment_title_<%= comment_title.id %>" class="comment_title"> \
<%= comment_title.title %> \
<%= link_to "x", comment_title_path(comment_title.id), :method => :delete, :remote => true, :class => "comment_title_delete" %> \
</div> \
<% comment_title.comments.each do |comment| %> \
<div class="comment_content"> \
<%= link_to image_tag(comment.user.profile.photo.url(:tiny)), profile_path(comment.user.profile), :class => "comment_image" %> \
<div class="textual_comment_content"> \
<div class="comment_text"> \
<span class="name_link"> \
<%= link_to "#{comment.user.name}", profile_path(comment.user.profile), :class => "normal" %> \
</span> \
<%= comment.body.gsub("'",''') %> \
</div> \
<span class="comment_footer"> \
<ul> \
<li class="list_style"><%= time_ago_in_words(comment.created_at) %> ago</li> \
<% unless current_user != comment.user %> \
<li><%= link_to "Delete", video_comment_path(:video_id => @video, :id => comment), :method => :delete, :class => "normal" %></li> \
<% end %> \
</ul> \
</span> \
</div> \
</div> \
<% end %> \
</div> \
<% end %> \
<% end %>');
$(“.comments\u div”).html('\
\
\
\
\
:delete,:remote=>true,:class=>comment\u title\u delete“%%>\
\
\
\
“评论图片”%>\
\
\
\
“正常”%>\
\
\
\
\
\
以前的\
\
- @video,:id=>comment),:method=>:delete,:class=>“normal”%>
\
\
\
\
\
\
\
\
\
');
我还有一个destroy.js.erb文件,它位于我的comment\u title目录中(因为destroy方法位于comment\u titles控制器中),每当我删除一个注释标题时,它都会被调用。我希望在这个销毁文件中有与上面相同的代码,这样当我删除注释标题时,html代码就会更新。问题是,
@video
未在我的comment\u title目录中定义,因此我不能将update.js.erb中的代码复制并粘贴到destroy.js.erb。因此,我的问题是,将上面的JS调用集成到销毁文件中的最佳方式是什么?销毁文件实际上不需要任何javascript。当您单击destroy时,您只需删除div,而无需更新任何内容
实际上,您确实需要javascript,但不是通过控制器,这可以在客户端完成,除非您确实需要等待响应
更新
这假设您正在使用REST
Ruby数组,用于循环并识别注释销毁链接
<% @video.comment_titles.each do |ct| %>
<%= link_to "Destroy comment", ct, :method => :delete, :confirm => "Are you sure?", :class => 'destroy' %>
<% end %>
您可以评论控制器:
def destroy
@comment = Comment.find( params[:id] )
@comment.destroy
respond_to do |format|
format.html { redirect_to :back }
format.js { render :nothing => true }
end
end
如果您有任何错误,请告诉我。我不太确定你的路线,所以很难猜到所有内容。我建议将所有HTML移到一个部分,然后由
.js.erb
文件呈现。好的,我现在就做。。。我讨厌那些我确实需要javascript的“\”sno。。。您看到我的案例
开关在哪里了吗?这会根据数据库数据更改类,然后动态更改css数据。这都是基于评论标题的数量,所以我需要在删除评论标题时动态更新。这非常简单!我会用一点时间为你写一段jq代码!哦,这是一个相关的问题:销毁链接是如何生成的?你能给我一个可以循环的对象数组吗。是ruby,php吗?好的,从你的标签上看,显然是ruby。只要给我你拥有的@resource
变量,比如@posts
,我就会为ya bro编写一个干净的sip。
def destroy
@comment = Comment.find( params[:id] )
@comment.destroy
respond_to do |format|
format.html { redirect_to :back }
format.js { render :nothing => true }
end
end