2012-03-19 2 views
0

레일을 시작하기 만하면 경로를 정의하는 데 문제가 있습니다. 문제를 해결할 수있는 설명서가 없으며 정의되지 않은 로컬 변수 또는 메서드 오류가 발생합니다.레일 경로 - 정의되지 않은 로컬 변수 또는 메소드

링크를 클릭하고 특정 조치를 취해야합니다. sortit은 mystuff 오브젝트를 정렬 한 후 인덱스 페이지로 재 지정하기 때문에 뷰가 없습니다. 미리 정의 된 액션 중 하나를 사용하면 사실 모든 것이 작동합니다. 물론 사전 정의 된 작업 중 원하는 작업이 없습니다.

내 /config/routes.rb 파일 :

match "/mystuff/sortit'", :controller => "mystuff", :action => "sortit" 

resources :mystuff 

내 /app/controllers/mystuff_controller.rb 파일

class MystuffController < ApplicationController 
.... 
    def sortit 
    @mystuff.sort 
    redirect_to_mystuff_path 
    end 
.... 
end 

내 /app/views/mystuff/index.html.haml 파일 :

-# This file is app/views/mystuff/index.html.haml 
%h1 All My Stuff 

%table#mystuff 
    %thead 
    %tr 
     %th= link_to raw("Type"), sortit 
.... 

내가 말했듯이 내가 미리 정의 된 동작으로 sortit을 바꾸면 그 동작이 실행됩니다. 그러나이 오류로 인해 정렬이 실패합니다.

undefined local variable or method `sortit' for #<#<Class:0x9997a10>:0x997c0f8> 
app/views/mystuff/index.html.haml:7:in `_app_views_mystuff_index_html_haml__61272557_87671610' 

그래서 내가 무엇을 놓쳤으며 어떻게 유형에 대해 생성 된 링크를 클릭 할 때 실행할 정렬을 얻을 수 있습니까?

감사합니다.

PS : 내 레이크 노선 출력 :

mystuff에 GET/mystuff에 (:. 형식) {ACTION => "인덱스": 컨트롤러 => "mystuff에"}

....

mystuff_sortit/mystuff에/sortit (:. 형식) {: 컨트롤러 => "mystuff에": 행동 => "sortit"}

그래서 경로를 긁어

가 내 길을 보여줍니다

.... 티 그는 mystuff_sorit라는 이름을 붙 였지만 객체 이름 앞에 붙은 액션이 아닌가? 대신 sortit_mystuff하지 않아야합니까?

+0

위의 mystuff 코드는 실제로 mystuffs입니다. –

+0

다음과 같이 경로 일치 행에 키를 추가하려고합니다. as => 'sortit'다음 sortit_path 또는 sortit_url을 sortit 대신 호출하십시오. –

+0

@Thanatos - 감사합니다. sortit 링크를 클릭해도 여전히 실패하지만 index.html 페이지가 표시 될 때 오류가 발생하지 않았습니다. routes.rb에서 나는 :에 을 추가했으며, index.html.haml에는 sortit_url을 추가했습니다. 그러나 이것이 어디에 기록되어 있습니까? : action => "sortit"이 지정됩니다. 왜 필요한가? 또한 _url "suffix"는 어디에 문서화되어 있습니까?

경로.RB :

매치 "/ mystuff에/sortit '": 컨트롤러 => "mystuff에": 액션 => "sortit": 등 => "sortit"원시 ("종류"LINK_TO = 번째

%), sortit_url

답변

0

하는 당신이 할 수있는 액션은 sortit하지만보기 실제로 my_stuffs_path (복수)입니다 index

index

redirect_to에 액션도 공간을 필요로 변경, 그래서 사용 redirect_to mystuff_path ... 입니다 rake routes (명령 행에서 가장 유용함)에서 볼 수 있는데, 경로에서 자원으로 정의하면됩니다.

+0

sortit은 실제 작업입니다. 구현되어야합니다. mystuff 목록을 정렬하고 인덱스 페이지가 다시 표시되므로보기가 없습니다. 나는 원래의 게시물을 편집 레이크스 경로의 첫 번째 두 라인은 –

+0

색인 또한 구현 된 행동이다. 선택 사항으로 정렬을 추가하는 것이 좋습니다. –

관련 문제