2013-02-28 3 views
1

'사용자'컨트롤러의 '표시'동작이 더 이상 페이지를 렌더링하지 않아야하지만 일부 json이 아약스 호출에 의해 사용되도록 결정했습니다. 편집 : 이미이 부분을 구현했습니다. 내 컨트롤러는 단지 뷰에서리소스에 대한 경로 변수를 변경하는 중

def show 
    render :json => myobject 
end 

내 자바 스크립트가 AJAX를 할 수있는 URL을 생성 가지고 있으며, 모두 잘 작동합니다. 내 질문에 관해서는 : 나는 단지 짧은 지름길을 찾고있다. user_path가 대신 뱉어 경우 대신

<%= link_to "Foobar" user_path(@user) %> 

처럼 뭔가, 내가보기에이 작업에 링크 모든 장소를 통과하고

<a href='javascript:blahblah'>Foobar</a> 

로 대체의 내가하고 싶은 내 자바 스크립트 URI. 틀림없이 이것은 끔찍한 해킹처럼 들리지만 할 수 있습니까?

당신이 형식을 지정할 수 있습니다

답변

1

, 당신은 헬퍼/application_helper.rb로 이동하여 트릭을 할 것이

def user_path(*args) 
    "javascript:..." 
end 

이를 삽입 할 수 있습니다. 그러나 장기적인 해결책으로 권장하지는 않습니다. 새 코드의 작동 방식을 확인하기위한 빠른 해결 방법 일뿐입니다.

또한 올바른 사용자에 대한 링크를 작성하려면 user_path 매개 변수의 가능한 모든 조합을 구문 분석해야합니다. user_path(@user) 형식으로 만 호출하면 비교적 쉽습니다.

+0

나는 나 자신을 잘 설명하지 않았다. 편집 된 포스트를 보아라. – bchurchill

+0

업데이트 된 질문에 기초하여 대답을 업데이트했습니다. – moonfly

+0

예, 동의합니다. 제 질문에 잘 대답했지만 실제로 사용해서는 안됩니다. 내 원래의 질문에 관해서는, 이것도 내가 어디에 내가 더 이상하고 싶지에 사용해서는 안됩니다 이후 user_path를 사용하여 어디에 내 테스트를 만드는 예외를 던질 수있는 방법을 보여줍니다. – bchurchill

2

:

user_path(user, format: :json) 

당신이 당신의 도우미 그냥 application_helper.rb에서 재정의, 오류가 발생 할 경우

:

def user_path(*args, options = {}) 
    raise MyException 
end 

... 아니면 그냥 좋아하는 IDE를 사용/셸에서 모든 도우미를 찾습니다.

해킹으로
+0

을 난 무엇 않습니다 찾고. – bchurchill

+0

질문을 잘 이해하지 못합니다. –

+0

정규 형식 대신 json에 연결하지 않을 것입니다. 이미 json 만 리턴하도록 컨트롤러를 변경했습니다. 이제 변수의 모든 사용을 추적하여 수동으로 수정하지 않으려합니다. – bchurchill

1

당신은 config/routes.rb에 경로에 대한 기본 형식을 지정할 수 있습니다 :

resources :user, defaults: { format: 'json' } 

show이 작업을 수행하려면 : 나는 그렇게 생각하지 않는다

resources :user, only: [:show], defaults: { format: 'json' } 
관련 문제