2012-05-22 2 views
0

인터넷에 대한 해결책을 찾기 위해 시간을 보냈지 만 해결책을 찾지 못하는 레일에 관한 기본적인 질문이 있습니다.레일 - 컨트롤러를 통해 링크를 통해 컨트롤러에 액세스하는 방법 알아보기

링크 클릭만으로 메소드를 호출하면됩니다.

아이디어는 컨트롤러의 메서드에 의해 생성 된 xml 파일을 내 보내야한다는 것입니다.

firms_controller.rb (exerpt)

.....def xml 
    @entries = Entry.find(:all) 
    send_data @entries.to_xml, 
    :type => 'text/xml; charset=UTF-8;', 
    :disposition => "attachment; filename=entries.xml" 
end.... 

나는 단지 기업이 다운로드 할 수있는 XML 파일을 얻기 위해 페이지를 볼에서이 메소드를 호출 할 필요가 있지만,이 일하러 가야 관리 할 수 ​​없습니다. XML 코드가 작동합니다 - 컨트롤러의 인덱스 메서드에 추가하면 완벽하게 작동합니다.

일부 온라인 기사를 읽은 후 링크를 ​​작동 시키려고 시도한 몇 가지 방법입니다. 하지만이 동작하지 않습니다 -

<% url = url_for({:action => "xml", :controller => 'firms'}.merge(params)) %> 
<%= link_to "XML", url %> 

는 가장 기본적인 방법은 매우 간단해야 뭔가처럼 날 것으로 보인다

<%= link_to "XML", :action => 'xml' %> 

을 시도했다.

오류 나는 점점 오전 : firms_controller

def show 
    @firm = Firm.find(params[:id]) 
    end 

에서

ActiveRecord::RecordNotFound in FirmsController#show 

Couldn't find Firm with ID=xml 

Rails.root: /home/james/rails/KPSmart 
Application Trace | Framework Trace | Full Trace 

app/controllers/firms_controller.rb:25:in `show' 

표시 방법은 아무 소용이 함께 작동하도록 얻을 수있는 경로 덤비는 노력했다. 당신의 도움이

답변

2

는 경로에서이

이 당신의 자원 위의 우리 기업 컨트롤러

match 'firms/xml', :controller => 'firms', :action => 'xml',:as => :firms_xml 

위해 작성 및

<%= link_to "XML", firms_xml_path %> 
1

이 라우팅 문제 또는 링크 문제처럼 보인다위한

감사합니다. ID 매개 변수를 XML 컨트롤러 메서드에 전달해야합니까? 귀하의 예시 링크는 그것을 보여주지 않습니다.

http://apidock.com/rails/ActionView/Helpers/UrlHelper/link_to

당신이 routes.rb의 기본 경로 설정이있는 경우 :

일치 '컨트롤러 (/ : 액션 (/ : 당신은 당신의 LINK_TO 도우미에 매개 변수를 전달하는 방법을 찾아 볼 필요가 ,

"XML"LINK_TO : ID)() : 형식) '

는 그런 다음 LINK_TO 같은 보여야 컨트롤러 => "기업", : 행동 => "XML을": ID => 1234

여기서 1234는 조회하려는 실제 ID입니다.

+0

이 당신의 제안을 시도 방법을 다음이 연결 쓰기보십시오 (하지만 URL은 http : // localhost : 3000/enterprises/xml? id = 1로 변경됩니다). 나는 모든 매개 변수를 전달할 필요가 없습니다. 모든 "매개 변수"를 반환해야합니다. 이 작업을 수행하는 더 쉬운 방법이 있습니까? 경로에 대해 권장 할만한 것이 있습니까? "3, XML <{"format"=> ["1 ", "2 "= ID와 기업 찾을 수 없습니다 : - – jmc

1

해당 링크를 확인하십시오!

나는 그것이 당신이 기대하는 것이라고 생각하지 않습니다. hash1.merge(hash2)을 통해 두 개의 해시를 병합하면 모든 중복 키는 hash2의 키를 생성합니다. 그리고 정확하게 (내가 정확하게 기억한다면) params 해쉬는 레일스 라우팅 과정에서 과 :controller 키가 추가되었으므로 현재 (쇼) 페이지로가는 경로에 의해 예상되는 경로가 오버라이드 된 것입니다.

당신은 당신에게 더 예측 결과를 제공 할 reverse_merge을 시도해 볼 수도 있습니다,하지만 난 당신의 인생을 더 쉽게하기 위해 레일의 경로 생성 헬퍼를 사용하는 것이 좋습니다 것 : 도움이

<%= link_to "XML", firm_xml_path(@firm) %> 

희망! 하지만 같은 오류가 -

+0

헤이 xml_firms_path (@firm),"XML "LINK_TO 시도 그러나 다른 PARAMS 다시 다음과 같은 오류를 던지고 " "4 ", "5 ", "6 ", "7 ", "8 ", "9 ", "10 "], "ID "=>"XML "} .... 페이지를 새로 고치지 않으려 고합니다. 컨트롤러에서 xml 파일을 다운로드하는 함수를 평가하기를 원합니다. – jmc

관련 문제