2009-10-03 2 views
0

Authlogic을 사용하여 페이지에있는 장소 편집기 필드 일부를 보호하려고합니다. 내 컨트롤러의 모든 메소드를 보호했지만 in_place_editor가 "/ quotes/set_quote_text/1"과 같이 경로에 표시되지 않는 이상한 생성물을 호출하는 것처럼 보입니다. 번호 하나는이 "비밀"노선에 관하여 더 많은 것을 말하는 위치 있는가? 또는 내가 편집 할 수있는 부분이 추가 된 것입니까? 모든 노선을 표시 할 때조차 나타나지 않는 것만으로도 지치지 않습니다.레일에서 authlogic 및 ajax를 사용하여 레일을 수정하고

내가 알기로는 컨트롤러에서 메소드가 아닌 것을 보호하는 방법을 모릅니다. 전체 경로를 보호 할 수 있습니까?

또 다른 질문은 업데이트 경로를 제한하더라도 장소 편집기 필드가 모든 것을 렌더링한다는 것입니다. 이 방법은 사용자가 로그인했는지 여부에 따라 적절한 버전을 렌더링하는 도우미를 만드는 것입니다. 나는 누군가가 로그인했는지 여부를 확인하기 위해 내가 컨트롤러에서 모든 작업을 수행했는지 확인할 필요가 있는지 확신 할 수 없다 ... 또한 팁 : 부분적으로 2 가지 버전 중 하나만 렌더링 할까? 로그인 한 상태에 따라 부분적으로 또는 다른 방법으로이 작업을 수행 할 수 있습니까?

감사합니다. 당신은 아마 알고

map.connect ':controller/:action/:id' 
map.connect ':controller/:action/:id.:format' 

는 또한, 모든 공공 컨트롤러 방법은 컨트롤러 액션 역할 : 기본 레일으로

답변

1

은 다음과 같은 경로를 포함합니다.

class SampleController < ActionController::Base 
    def test 
    render :text => "text" 
    end 
end 

그래서 기본 노선으로, /sample/testin_place_edit_for(object, attribute, options = {})set_#{object}_#{attribute}라는 컨트롤러의 새로운 방법을 정의하는 것입니다 알고도 가치가 SampleController#test

를 호출합니다 :

는 다음 컨트롤러를 고려하십시오. 귀하의 경우에는 set_quote_text입니다.

귀하의 질문에 대답하려면 :

  • 이유는 경로 rake routes에 표시되지 않습니다 : 그것은 내가 처음에 대해 이야기하는 기본 경로를 사용하고 있기 때문에 이 거의 확실히 이것이다. 종종 명시 적으로 정의한 경로 만 사용되도록이 경로를 제거합니다.
  • 어떻게 in_place_edit 작업을 보호 할 수 있습니까? : 이제 작업 이름을 알고 있으므로 보호 된 작업 목록에 추가 할 수 있습니다. before_filter :authentication_required, :only => LIST_OF_ACTIONS_REQUIRING_AUTHENTICATION 줄에 뭔가 있다고 가정합니다. 그러나 이보다 안전하지 않은 경우를 제외하고는 보호를 원하지 않는 모든 작업 목록을 제외하고 사용하십시오 : before_filter :authentication_required, :except => LIST_OF_ACTIONS_THAT_DON'T_REQUIRE_AUTHENTICATION

바라기를 바라기 만하면됩니다.

+0

감사 : the except 메서드는 더 안전하며 더 많은 경우를 다루고 있습니다. 그러나 나는 그것이 여러 경로를 만든다는 사실에 대해 아직도 혼란 스럽다. 만약 내가 그들을 보호하고 싶다면, 각 속성에 대해 생성 된 경로가 너무 많기 때문에 어떻게 할 수 있을까요? 전반적으로 모든 set_ 라우트를 보호 할 수 있습니까? –

+0

무슨 뜻인지 모르겠습니다. 다른 속성을 언급하지 않는 한, 속성 당 하나의 경로 만 생성됩니다. –

관련 문제