我正在我的代码中做一些样式,我希望在我的应用中显示消息在群组论坛上发布的时间。此论坛中每条消息的Currenlty发布都适用于通过Jquery 1.4实现的AJAX功能。
在我的post_message.js.erb文件中包含div标签时,我发现该消息没有在组主页上发布(我在那里进行了所有特定于组的讨论 - 这个功能类似于在FB小组中看到。)
邮件会保存在我的数据库中,并且会在页面上显示我发布的最新消息。
post_message.js.erb中的代码如下所示: -
$("#new_post").before('<div id ="new_post"><%= escape_javascript(flash.delete(:notice)) %></div>');<!--TO-DO the flash messages aren't yet enabled/working-->
$("#latest_post").prepend("<%= @group_post.message %> by <%= Investor.find(@group_post.post_by).first_name %> <%= distance_of_time_in_words(@group_post.created_at,Time.now) %> ago <br/><br/><hr/>");
$("#new_post")[0].reset();
当我将第二行更改为: -
时,上面的代码停止正常运行$("#latest_post").prepend("<%= @group_post.message %> by <%= Investor.find(@group_post.post_by).first_name %> <div class ="contentdispgrp"> <%= distance_of_time_in_words(@group_post.created_at,Time.now) %> ago </div><br/><br/><hr/>");
在_common.html.erb文件中对应上面代码的部分(这是一个局部视图,其中我有我最终在我的.js.erb文件中使用的所有html标签和id)如下所示: -
<table>
<tr>
<%if @current_user.is_an_existing_member_of_group(@investor_group)%>
<%form_for :group_post, @group_post, :url => {:action => :post_message, :id => params[:id]},:html => {:multipart => 'true', :id => 'new_post'} do |f| -%>
Start Discussion:<br><%=f.text_field :message%>
<!--<%=f.file_field :photo%> -->
<%=submit_tag "Post"%></p>
<%end%>
<div id = "latest_post"> </div>
<%for a in @group_all_posts %>
<%= a.message %> by <%= Investor.find(a.post_by).first_name %> <div class ="contentdispgrp" id="style_chck"> <%= distance_of_time_in_words(a.created_at,Time.now) %> ago </div><br/><br/> <hr/>
<%end%>
</tr>
<%end%>
</table>
我的群组控制器中的post_message方法如下所示: -
def post_message
@investor_group = InvestorGroup.find(params[:id])
unless @current_user.is_an_existing_member_of_group(@investor_group)
flash[:notice] = "Please join this group to participate in discussions"
redirect_to :action => :show, :id => @investor_group and return # try to find out what exactly does this command do with return stmnt
else
@group_post = GroupPost.new(params[:group_post])
end
#@group_post = GroupPost.new(params[:group_post])
investor_id = session['investor_id']
@group_post.investor_group_id = @investor_group.id
@group_post.post_by = investor_id
if @group_post.save
flash[:notice] = 'Post was successfully created.'
# redirect_to :action => :show, :id => params[:id] - removed after trying to implement ajax via jquery
else
flash[:notice] = 'Post was not successfully created.'
end
respond_to do |format|
format.html {redirect_to :action => "show", :id => params[:id]}
format.js
end
end
如何在不刷新页面的情况下解决此问题?我不确定我做错了什么。请帮助。
感谢。
[编辑]
group.js文件代码: -
jQuery.ajaxSetup({
'beforeSend' : function(xhr) {
xhr.setRequestHeader("Accept","text/javascript")
}
})
$(document).ready(function(){
$("#new_post").submit(function(){
$.post($(this).attr("action"),$(this).serialize(),null,"script");
return false;
})
})
答案 0 :(得分:1)
我能够通过向我想要隐藏或显示的控件周围的页面添加另一个标记来解决此问题。
我无法获得div的显示:无法以编程方式工作,或者无法使用asp:Panel来切换其可见性。
在AJAX能够更改显示参数之前,ASP.NET正在渲染页面,特别是我想要隐藏或显示的部分。 UpdateMode =“始终”发信号通知AJAX更新其他部分。
答案 1 :(得分:0)
你能确认你的ajax有效吗?我希望看到一个':remote =&gt;在您的表单标签中为true。如果它不在那里我不会认为你的format.js响应会被调用。
form_for :group_post, @group_post, :remote=>true ...
我认为当你进行页面刷新时,它不会调用js代码,而只是调用format.html。要检查您是否可以检查您的日志或在格式块中打印一个打印语句,看看它是否被打印。
format.js do
puts "I am here"
end
答案 2 :(得分:0)
通过在定义样式表的类时删除多余的引号(“)来修复错误,在post_message.js.erb.