在Ruby on Rails中组织和路由AJAX调用

时间:2015-06-26 17:51:59

标签: ruby-on-rails ruby ajax ruby-on-rails-4

我正在使用Rails 4,我玩过AJAX。我成功地让它发挥作用。其上具有Ajax链接的页面是show.html.erb。它有一个有帖子的帖子,帖子有评论。为了避免加载所有内容,我使用Ajax来加载帖子列表和评论列表。就像Facebook一样。

我按以下方式组织它:页面控制器检查是否存在ajax_action查询参数。如果是,则呈现JavaScript响应。它使用before_action进行检查。 ajax_action的值为load_postsload_commentsload_replies。它们映射到页面控制器中的私有方法。

当我在同一页面上需要不同的Ajax方法时,这听起来是一个好方法吗?或者你是以另一种方式做到的?

来自页面控制器的

代码:

    before_action :delegate_ajax, only: :show

    def delegate_ajax
        ajax_action = params[:ajax_action]
        unless ajax_action.nil?
          ajax_handlers = {'load_posts' => 'load_posts', 'load_comments' => 'load_comments'}
          send(ajax_handlers[ajax_action])
        end
      end

def load_posts
    # Some logic (hidden for now)

    respond_to do |format|
      format.js { render 'load_posts', layout: false }
    end
  end

def load_comments
    # Some logic (hidden for now)

    respond_to do |format|
      format.js { render 'load_comments', layout: false }
    end
  end

至少这样做会使routes.rb无视所有AJAX路由。

0 个答案:

没有答案