【问题标题】:Rails 3/jquery - Tabs rendering partials using ajaxRails 3/jquery - 使用 ajax 渲染局部的选项卡
【发布时间】:2011-08-26 20:41:34
【问题描述】:

使用 Rails 3 和 jquery,我正在尝试为我的 post#show 页面设置一个简单的 3 选项卡导航,单击时将 _post _cmets 和 _related 部分呈现到视图中。

目前,这些部分没有自己的控制器操作。

处理这些 ajax 调用的最简洁的 Rails 方法是什么?

我试过了,但它不起作用:

后控制器:

def tab  
  respond_to do |format|
    format.js
  end
end

展示后视图:

<%= link_to "Comments", {:action => 'tab'}, :remote => true %>

/views/posts/tab.js.erb

$('#postshow').html("<%= escape_javascript(render('comments')) %>");

但是,如果我这样做,当我尝试打开我的 Track Show 页面时,我会因为这个错误而挂断 "没有路线匹配 {:action=>"tab", :controller=>"posts"}"

我以为我为应该呈现 tab.js.erb 的 tab 定义了一个动作......但更重要的是,这似乎有点笨拙,只是在三个部分之间切换。

非常感谢任何帮助。谢谢。

【问题讨论】:

    标签: jquery ruby-on-rails ajax


    【解决方案1】:

    您的操作位于 PostsController 中,因此您应该编写:

    <%= link_to "Comments", {:controller => "posts", :action => "tab"}, :remote => true %>
    

    【讨论】:

    • 我的错,我实际上只是复制了错误的代码,只是在我的帖子中修复了它。我正在使用帖子控制器,错误显示No route matches {:controller=&gt;"posts", :action=&gt;"tab"}。我确实尝试将 :controller =&gt; "posts" 放入 link_to 块中,但没有帮助。我确定我在这里做错了很多,但是当我在帖子控制器中确实有一个选项卡路由时,为什么它会说no route matches?这让我很困惑。
    • 那你在 routes.rb 中有问题。你能把这个文件中的那行贴在这里吗?
    【解决方案2】:

    好的,知道了。只需要将资源添加到 routes.rb... 认为这部分只是神奇地发生了。

    把它放在 routes.rb 中

    resources :posts do
      ...
      member do
        get 'tab'
      end
    end
    

    现在它找到了路由并渲染了 javascript。

    话虽如此,如果有人阅读了这篇文章并能指出一种更清洁或更简单的方法来为渲染的部分设置 ajax 链接,那就太好了。

    【讨论】:

      猜你喜欢
      • 2012-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-08
      • 1970-01-01
      • 2013-06-19
      相关资源
      最近更新 更多