使用link_to指定控制器操作呈现Ajax部分的问题

时间:2011-06-15 12:00:35

标签: ajax ruby-on-rails-3 jquery partial link-to

我在“命题”显示页面上有一个div(id =“content”),我想根据div顶部的哪个选项卡呈现不同的部分。

我正在尝试使用以下link_to使用AJAX呈现部分(dominant_content):

<%= link_to "Connected", :url => {:controller => "propositions", 
                           :action => "substantive_content"}, :remote => true %>


我有两个问题:

  1. 点击链接后,发出GET请求 发送给 PropositionsController#show,和 不是(我推测)到“实质性的 内容“动作。这只是刷新页面而不会远程执行任何操作。不显示正确的部分。

  2. 我不知道怎么渲染一个 部分进入“内容”div。


  3. 目前我在PropositionsController中有这个:

      def substantive_content
         respond_to do |format|
             format.js{ render :update do |rightbar|
                     rightbar.replace_html 'content', 'Hello World!'
             end}
         end
      end
    


    ......但我不确定从哪里开始。我是否以正确的方式解决这个问题?我对rails,javascript等很新。

    任何这些问题的帮助都会很棒。谢谢!

1 个答案:

答案 0 :(得分:1)

在routes.rb文件中,您应该有一个entity_content操作的条目。它可能看起来像这样:

match "substantive_content" => "propositions#substantive_content", :as => substantive_content

然后在您的视图中,链接应如下所示:

<%= link_to "Connected", substantive_content_path, :remote => true %>

当js请求进入dominant_content操作时,我会呈现一个js.erb文件。这个动作看起来像这样:

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

然后在views / propositions目录中创建一个substan_content.js.erb文件。在该文件中,您可以使用jquery更新内容div:

$('#content').html("<%= render :partial => 'your_partial_name_here' %>");

如果不了解您正在使用的实际应用程序,很难说这是否是实现您想要的最佳方式。我通常尽量使用我的应用程序保持“RESTful”,所以我不愿意创建动作不是正常索引,新建,创建,显示等设置的一部分。这并不是说在这种情况下它不是必要的,但它是值得思考的。