2011-08-25 3 views
1

레일 3 애플리케이션에는 결과 컨트롤러가 있습니다. 컨트롤러에서 show 액션을 사용하여 show.html.erb 페이지에 메신저 할 때 필터 동작에 대한 링크가 있습니다. 필터 작업이 끝나면 다시 show.html.erb로 리디렉션하려고하지만 어떤 이유로 든 Template is missing Missing template results/filter을 계속 말합니다. Im는 ajax를 사용하므로 fitler.js.rjs 파일이 있지만이 점을 파악할 수는 없습니다. filter.js.rjs 파일을 제거하면 나에게 준다 Unknown action The action 'filter' could not be found for ResultsControllerredirect_to를 사용할 때 템플릿이 누락 되었습니까?

Heres 내 결과 코드 동작. 어떤 도움을 주셔서 감사합니다. 다음은 UPDATE

def filter 
      @dispatches = Dispatch.find_by_message_ids(params[:message_ids]) unless params[:message_ids].blank? 

      unless @dispatches.blank? || @input_messages.blank? 
      @output_messages = OutputMessage.find_by_dispatch_ids(
               @dispatches.collect{|d| d.id }.uniq 
              ) 
      end 

      respond_to do |format| 
        format.html { redirect_to show_path } 
        format.js 
      end 
    end 

<%= form_tag(:controller => "results", :action => "filter", :remote => true) do %> 

답변

0

작동합니다. 문제는 내 양식 태그였습니다. 을 출력하여 form_tag를 다음과 같이 변경했습니다.

<%= form_tag url_for(:controller => "results", :action => "filter"), :remote => true do %> 

그리고 효과가있었습니다. 그러나 HTML5를 사용하고 있습니다. 이제는 HTML5가 아닌 대안을 찾으려고합니다.

1

redirect_to의 show_path가 작동하지 않습니다 필터 동작을 호출 show.html.erb의 코드입니다; "show"액션은 id 나 객체 인스턴스를 기대합니다. Rails 3에서는 객체로 직접 리디렉션 할 수 있습니다. redirect_to @user 이것은 해당 객체의 show 메소드로 기본 설정됩니다. redirect_to (: action => "show", : id => NN)를 사용하여 id를 수동으로 제공하고 선택적으로 컨트롤러를 지정할 수있는 작업으로 리디렉션 할 수도 있습니다. 또는 구식 방식 인 redirect_to show_user_path (@user)를 사용합니다.

+0

그래, show_path를': action => 'show "'로 전환하고 여전히 작동하지 않으므로 전체 필터 블록을 위 쇼 블록과 이제 작동합니다. 아주 이상한. 하지만 이제는 또 다른 오류가 발생합니다. '렌더링 및/또는 리디렉션이이 작업에서 여러 번 호출되었습니다. 주의하십시오. '쇼가 리다이렉트 오류를 ​​사용하기 때문에 리디렉션 후 리다이렉션을 건너 뛰도록 레일스에 지시 할 것입니까? –

+0

위의 예제를 새 코드로 업데이트하거나 요점을 알려주시겠습니까? –

+0

많은 문제가있는임이 있습니다. 나는 시도하고 물건을 정렬하고 어쩌면 새로운 질문을 엽니 다. 도움을 주셔서 감사합니다. –

0

양식에 :remote => true이 있는데이 요청은 들어오는 요청이 ajax 호출이고 따라서 레일즈가 filter.js.rjs 파일을 찾지 않을 것이며 html 파일을 찾지 않을 것입니다. 따라서 rjs 파일을 제거하면 오류가 발생합니다.

+0

그래,하지만 filter.js.rjs가 있고 그 템플릿을 찾을 수 없다. –

+0

어디서나 부분 호출이 있습니까? – Rahul

+0

예. filter.js.rjs의 내용은 다음과 같습니다 :'page.insert_html : top, : fitler, : partial => "fiter"' –

관련 문제