Rails 3.1和RSS的自动检测

Exi*_*iRe 2 xml safari macos rss ruby-on-rails-3.1

美好的一天!

我尝试在我的Web应用程序中通过浏览器实现rss的自动检测.我知道auto_discovery_link_tag,我试图使用它.我通过Safari测试它.但这是问题 - 当我尝试:

/app/views/layouts/application.html.erb

<%= auto_discovery_link_tag( :rss, {:controller => "users_controller", :action => "show"} ) %>
Run Code Online (Sandbox Code Playgroud)

Rails的服务器显示

Routing Error

No route matches {:controller=>"users_controller", :action=>"show"}
Run Code Online (Sandbox Code Playgroud)

当我尝试时

/app/views/layouts/application.html.erb

<%= auto_discovery_link_tag( :rss ) %>
Run Code Online (Sandbox Code Playgroud)

浏览器显示RSS在每个页面上都可用(这是错误的)并且不显示它.

这是我的代码:

/app/controllers/users_controller.rb

class UsersController < ApplicationController

  def show
    @user  = User.find( params[:id] )
    @title = @user.name                                                       
    @microposts = @user.microposts.paginate(:page => params[:page])

    respond_to do |format|
      format.html
      format.rss { render :layout => false }
    end
  end
Run Code Online (Sandbox Code Playgroud)

/app/views/users/show.rss.builder

xml.instruct! :xml, :version => "1.0" 
xml.rss :version => "2.0" do
  xml.channel do
    xml.title "Feed of #{@user.name}"
    xml.description "Rails. Feed of user."

    for post in @microposts
      xml.item do
        xml.title post.id
        xml.description post.content
        xml.pubDate post.created_at.to_s(:rfc822)
      end
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

Ben*_*ret 5

_controller部件不是必需的,rails会自动附加它:

<%= auto_discovery_link_tag( :rss, {:controller => "users", :action => "show"} ) %>
Run Code Online (Sandbox Code Playgroud)