2012-01-02 2 views
0

나는 특정 항목을 요청하는 db에 대한 쿼리를 가지고 있습니다. 이것은 컨트롤러 :AJAX로 다른 컨트롤러에서 렌더링

def index 

    @contributions = Contribution.all 
    @number1 = params[:number1] 
    @number2 = params[:number2] 
    @itemsok = Contribution.where("first_item_id = ?",@number1).where("first_item_grade = ?",@number2) 


    respond_to do |format| 
     format.html # index.html.erb 
     format.json { render json: @contributions } 
    end 

좋아, 내가보기 느릅 나무의 형태가 나를 완벽하게 작동 사용자 입력

<%= form_tag(contribution_path, :method => "get") do %> 
    <%= label_tag(:number1, "First Item Id") %> 
    <%= text_field_tag(:number1) %> 
    <%= label_tag(:number1, "First Item Grade") %> 
    <%= text_field_tag(:number2) %> 
    <%= submit_tag("Do it!" , :remote => true) %> 
<% end %> 

에서 데이터를 전달할 수있다, 그러나 지금은이 기능을 렌더링 할 메인 페이지 인덱스 (display_controller, display index.html.erb)에서. 나는이 같은 display_controller 모든 속성 주었다

class DisplayController < ApplicationController 
    def index 
    @items = Item.all 
    @contributions = Contribution.all 
    @number1 = params[:number1] 
    @number2 = params[:number2] 
    @itemsok = Contribution.where("first_item_id = ?",@number1).where("first_item_grade = ?",@number2) 
    respond_to do |format| 
     format.html # index.html.erb 
     format.json { render json: @contributions } 
    end 
    end 

end 

을 내가 기여에 표시보기에서 동일한 양식을 볼 수 있습니다 .... 는 지금 그것은 무엇 그것이 저를 리디렉션이다 공헌 부분, 내가 원하는 건 디스플레이보기에서 결과를 렌더링하는 것입니다 ...

어떤 생각? 고맙습니다. 끔찍한 영어로 죄송합니다.

# 

나는 대답은 내 경우에는

<%= form_tag(contribution_path, :method => "get") do %> 
    <%= label_tag(:number1, "First Item Id") %> 
    <%= text_field_tag(:number1) %> 
    <%= label_tag(:number1, "First Item Grade") %> 
    <%= text_field_tag(:number2) %> 
    <%= submit_tag("Do it!" , :remote => true) %> 
<% end %> 

변경이

<%= form_tag(display_path, :method => "get") do %> 
    <%= label_tag(:number1, "First Item Id") %> 
    <%= text_field_tag(:number1) %> 
    <%= label_tag(:number1, "First Item Grade") %> 
    <%= text_field_tag(:number2) %> 
    <%= submit_tag("Do it!" , :remote => true) %> 
<% end %> 

선택한 행동을보기에서 폼을 변경했다

가있어 그것을 가지고 이것은 처음에는 작동하지 않았지만 지금은 그것이 원인이라고 생각했습니다. display_path가 root_path로 설정되어 있으므로 변경했습니다 ...

<%= form_tag(root_path, :method => "get") do %> 
    <%= label_tag(:number1, "First Item Id") %> 
    <%= text_field_tag(:number1) %> 
    <%= label_tag(:number1, "First Item Grade") %> 
    <%= text_field_tag(:number2) %> 
    <%= submit_tag("Do it!" , :remote => true) %> 
<% end %> 

이제 완벽하게 작동합니다.

누군가가이 질문을 대답하도록 변경할 수 있습니까, 나는 명성 21처럼하고 내 자신의 질문에 대답 할 수 없습니다. 탱크. 당신이 코드의 repititions를 방지하고 재사용 할 수 있도록 공통 partial view에 그 formm를 이동 한 다음 그것을 어떤 controllerindex보기를 사용할 수있는 형태로 태그에 :url =>{:action => 'my_action'}를 사용해야합니다 quelity 더 나은 코드를

+0

모든 컨트롤러에 대해 동일한 양식을 사용하고 있기 때문에 공용 부분보기로 이동하여 다시 사용할 수 있습니다. 매번 코드를 반복 할 필요가 없습니다. 내 대답을 확인하십시오. –

답변

0

. 양식 작업 중에는 defaultcontroller이 렌더링됩니다.

share/_form.erb.html 

<%= form_tag(:url =>{:action => 'my_action'}, :method => "get") do %> 
    <%= label_tag(:number1, "First Item Id") %> 
    <%= text_field_tag(:number1) %> 
    <%= label_tag(:number1, "First Item Grade") %> 
    <%= text_field_tag(:number2) %> 
    <%= submit_tag("Do it!" , :remote => true) %> 
<% end %> 

하고도

def index 
// do something 
    @action = 'new_action' 
    @controller = 'new_controller' 
    // do some more thing 
end 

같은 색인 방법에 행동과 컨트롤러에 대한 변수를 선언 할 수 있습니다

index.erb.html 

<%= render :partial 'share/form' %> 

컨트롤러 각각의 인덱스보기

다음 형태로

:url =>{:controller => @controller, :action => @action} 
관련 문제