如何使用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 加载模板时如何触发页面组件事件?

使用 ajax 渲染局部视图

如何使用 php/jquery 实现持久页面?

如何将模型数据加载到在 Yii 中使用 Ajax 过滤的 Select2 下拉列表

如何在rails中异步加载部分页面

使用 AJAX 刷新 Rails 部分时的未定义方法