레일을 시작하기 만하면 경로를 정의하는 데 문제가 있습니다. 문제를 해결할 수있는 설명서가 없으며 정의되지 않은 로컬 변수 또는 메서드 오류가 발생합니다.레일 경로 - 정의되지 않은 로컬 변수 또는 메소드
링크를 클릭하고 특정 조치를 취해야합니다. 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하지 않아야합니까?
위의 mystuff 코드는 실제로 mystuffs입니다. –
다음과 같이 경로 일치 행에 키를 추가하려고합니다. as => 'sortit'다음 sortit_path 또는 sortit_url을 sortit 대신 호출하십시오. –
@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
–