来自辅助方法的意外点

时间:2011-06-23 13:55:15

标签: ruby-on-rails-3 routing

我有以下路线

PosTracker::Application.routes.draw do
  get "home/index"

  resources :pos
  resources :apis

  match 'update_data' => 'home#update', :as => :update, :via => :get
  root :to => "home#index"

end

现在,使用link_to辅助方法时:

link_to "text", pos_path(starbase)

我得到以下路线/pos.13而不是/pos/13。显然,这不会产生有效的输出。我该如何解决这个问题?

编辑:相关控制器:

class PosController < ApplicationController
  # GET /pos
  # GET /pos.xml
  def index
    #do stuff        

    respond_to do |format|
      format.html # index.html.erb
      format.xml  { render :xml => @pos }
    end
  end

  # GET /pos/1
  # GET /pos/1.xml
  def show
    @pos = Pos.find(params[:id])

    respond_to do |format|
      format.html # show.html.erb
      format.xml  { render :xml => @pos }
    end
  end
end

1 个答案:

答案 0 :(得分:7)

在我看来,Rails正在将pos_path识别为你的#index动作网址助手。通常,它会将您传递给资源的符号用于#show操作。

您要使用的网址助手是

link_to "text", po_path(starbase)

通常可以通过运行

找到辅助方法的名称
rake routes

或者获取特定控制器的帮助

rake routes CONTROLLER=pos