我通过Ajax提交了一个。提交此表单后,我想获取新信息并替换屏幕上已有的div。
<div style="float: left; margin-left: 10px; padding-left: 10px; border-left: 1px solid black;">
<%= form_for [@event,@default_event_status], :remote => true, :html => {:id => 'default_event_status', :'data-update-target' => 'last_status'} do |f| %>
<%= f.hidden_field :event_id %>
<%= f.hidden_field :video %>
<%= f.hidden_field :audio %>
<%= f.submit "Report all OK", :style => "margin-top: 1px;" %>
<% end %>
</div>
Div替换
<div id="last_status">
Last Status:
<%= render "last_status" %>
</div>
控制器
def create
@event_status = EventStatus.new(params[:event_status])
@event_status.created_by = current_user.id
@event_status.save
render :partial => "events/last_status", :content_type => 'text/html'
end
我从其他帖子在线获得了数据目标的想法,但我不确定它是否做了什么。请提供任何提示或想法谢谢!
HTML页面
<div id="monitor" style="height: 25px;">
<div id="last_status">
Last Status:
<%= render "last_status" %>
</div>
<%= content_for :javascript do %>
$(document).ready(
function() {
setInterval(function() {
$("#last_status_content").load("event_statuses/load_event_status");
}, 300000);
$('form[data-update-target]').live('ajax:success', function(evt, data) {
var target = $(this).data('update-target');
$('#' + target).html(data);
});
}
);
<% end %>
<div style="float: left; margin-left: 10px; padding-left: 10px; border-left: 1px solid black;">
<%= form_for [@event,@default_event_status], :remote => true, :html => {:id => 'default_event_status', :'data-update-target' => 'last_status'} do |f| %>
<%= f.hidden_field :event_id %>
<%= f.hidden_field :video %>
<%= f.hidden_field :audio %>
<%= f.submit "Report all OK", :style => "margin-top: 1px;" %>
<% end %>
</div>
<span id='hide_status'><%= link_to "Hide", "#", :onclick => "document.getElementById('monitor').style.display = 'none'" %> </span>
</div>
答案 0 :(得分:1)
您可以在页面中使用javascript事件或使用:remote =&gt;是的,你可以返回Javascript。 检查这个有用的演员;)