2012-01-02 9 views
0

私は特定のエントリを求めるdbにクエリを持っています。これは、コントローラである:OKAJAXを使用して別のコントローラからレンダリングする

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 %> 

に選択したアクションにビューでフォームを変更した

がそれを手に入れたそれを得ましたこれは最初からうまくいきませんでしたが、今はそれが私はroot_pathとして私のdisplay_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の評判があり、自分の質問に答えることができません。タンク。

+0

すべてのコントローラで同じフォームを使用しているため、共通部分ビューに移動して再利用することができます。毎回コードを繰り返す必要はありません。私の答えをチェックしてください。 –

答えて

0

より良いコードquelityのためには、コードのrepititionsを避け、再利用可能にする、共通partial viewにそのformmを移動して、あなたがそれをどのcontrollerindexビューを使用することができformタグで:url =>{:action => 'my_action'}を使用する必要があります。フォームアクション中にレンダリングされる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 %> 

とコントローラのそれぞれのインデックスビュー

index.erb.html 

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

であなたもフォーム

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

、その後のようなあなたのインデックスの方法でアクションやコントローラ用の変数を宣言することができます

:url =>{:controller => @controller, :action => @action} 
関連する問題