2

레일즈로 생성 한 '트랜잭션'모델, 컨트롤러 및 뷰가 있습니다. 이제 컨트롤러 휘발성 명령으로 처리 할 응용 프로그램에/transactions/history의 단일 사용자 정의 경로를 추가해야합니다. ... end 및 render history.html.erb

내 routes.rb에 다음 행이 추가되었습니다. 레일에 단일 맞춤 경로를 추가하는 방법은 무엇입니까?

get '/transactions/history', to: 'transactions#history', as: 'transactions_history' 

그리고 내 transactions_controller.rb이 : 레이크 경로를 호출 할 때 나는 또한이 줄을 참조

def history 
    @transactions = Transaction.all 
end 

및 transactions-에서 history.htmk.erb을 작성> 뷰

:

transactions_history GET /transactions/history(.:format)     transactions#history 

하지만 localhost를 요청할 때 : 브라우저에서 3000/거래/역사, 그것은 나에게 다음과 같은 오류 제공 :

Couldn't find Transaction with 'id'=history 

before_action :set_transaction, only: [:show, :edit, :update, :destroy]) 
(나는 내 ​​컨트롤러에서이 라인을 가지고 있기 때문에)

나는 또한 로그에이 줄을 참조하십시오

Request info 

Request parameters 
{"controller"=>"transactions", "action"=>"show", "id"=>"history"} 
을 0

내 전체 경로 : routes.rb 내 전체 오류 : error logs 내 트랜잭션 컨트롤러의 '쇼'조치를 호출 이유는 무엇입니까?

+0

전체 routes.rb 파일을 게시 할 수 있습니까? 그리고 당신이 루트를 긁어 모으는 것을 볼 수있는 내용의 전체 사본? – moveson

답변

2

routes.rb에서 레일 비계 생성기는 resources :transactions을 추가해야합니다. 이렇게하면 7 개의 경로가 생성되며 그 중 하나는 /transactions/:id이며 이는 show 액션의 TransactionsController에 해당합니다.

레일은 routes.rb에 정의 된 순서로 경로를 일치시키고 의 컨트롤러 동작을 첫 번째로 경로로 호출합니다.

나는 get '/transactions/history', to: 'transactions#history', as: 'transactions_history' 아래에 resources :transactions을 정의했다고 생각합니다. /transactions/history을 전달할 때 :idhistory과 일치하는 show 작업이 호출됩니다.

첫째, resources :transactions 위의 사용자 정의 경로를 이동 :

이 문제를 해결하려면

는이 개 솔루션이 있습니다.

또는이 resources 선언을 확장하고과 같이 사용자 정의 경로를 제거 : 경로가 특별히 GET transactions/:id, 기본 자원 경로와 충돌하기 때문에

resources :transactions do 
    collection do 
    get :history 
    end 
end 
+0

두 번째 솔루션을 시도했지만 작동하지 않았습니다. (동일한 오류) –

+1

하나의'resources : transactions' 만 있어야합니다. 귀하의'routes.rb'를 게시하십시오 – AbM

+0

그게 문제를 해결, 나는 단지 하나의 자원 : 트랜잭션을 가지고 그 지점을 몰랐어요. 감사합니다 :) –

0

그것은이다.

resources :transactions do 
    get :history, on: :collection 
end 

http://guides.rubyonrails.org/routing.html#adding-collection-routes

또한 시도 할 수 있습니다 :

  1. 당신의 경로가 정의되는 순서를 전환하거나
  2. 그렇지 않은 충돌, 예를 않도록 사용자 정의 경로 변경 /transactions/history 대신 /transaction_history 또는 다른 것을 시도하십시오.
+0

그래, 그랬지 만 같은 오류 –

+0

서버를 다시 시작 했습니까? – jverban

+0

예, 다시 시작했습니다. –