如何使用ajax加载部分
Posted
技术标签:
【中文标题】如何使用ajax加载部分【英文标题】:How to load partial with using ajax 【发布时间】:2016-01-28 11:19:39 【问题描述】:确实,尽管将 ajax 加载设置为 'remote=>true',但它会加载 url
'/noajax_en/v/yt/' + @movie.uid + '/refresh_part_after_comment'
为什么它不会加载 ajax?它应该加载下面的网址
'/en/v/yt/' + @movie.uid + '/refresh_part_after_comment'
这是我的代码
查看
<%= form_for(@comment, :url => :controller => "comments", :action => "create" , :remote => true) do |f| %>
<%= f.text_field :body, id:"body_input" %>
<%= f.hidden_field :elapsed_time, id: "elapsed_time" %>
<%= f.hidden_field :video_id, value: params[:uid] %>
<%= button_tag( :class => "btn btn-primary") do %>
Post
<% end %>
<% end %>
cmets_controller.rb
def create
.
.
.
flash[:notice] = "posted"
if request.xhr? # ajax request
respond_to do |format|
render '/en/v/yt/' + @movie.uid + '/refresh_part_after_comment'
end
else
redirect_to '/noajax_en/v/yt/' + @movie.uid + '/refresh_part_after_comment'
end
end
【问题讨论】:
尝试取出respond_to do |format|
块,即在request.xhr?
案例中执行render
行。
@MaxWilliams 感谢您的评论。取出来还是一样。
@MKK 你想在哪里渲染部分?它应该加载一些内容并替换视图中的某些内容吗?
@rob 是的,这正是我想要的!
【参考方案1】:
两件事错了..
form_for 需要:远程:选项中的 true
在您的控制器中..无需检查请求对象..respond_to 已经这样做了:
respond_to do |format|
format.html # redirect here
format.js do
render 'view name.js.erb' # or leave out to render default view.js.erb for action
end
end
【讨论】:
以上是关于如何使用ajax加载部分的主要内容,如果未能解决你的问题,请参考以下文章
在 Oro 平台上使用 Ajax 加载模板时如何触发页面组件事件?