2016-04-05 4 views
-1

マイビュー私のコードはViewをスキップしてコントローラに直接入ります。レール

<h1>Return a Book</h1> 
<%= form_tag("/orders/returnB", method: "get") do %> 
    <div class="form-group"> 
    <%= label_tag :ID, "ID" %> 
    <%= text_field_tag :ID, nil, class: "form-control" %> 
    </div> 
    <%= submit_tag "Submit", class: "btn btn-default" %> 
<% end %> 

私のコントローラ

def returnB 
    getid = params[:ID] 
    @order = Order.find(getid) 
    @order.destroy 
    respond_to do |format| 
    format.html { redirect_to orders_url, notice: 'Order was destroyed.' } 
    format.json { head :no_content } 
    end 
end 

そのだけのコントローラに直接行くと、それはエラーを与えるので、私のコントローラがIDを取得できませんでしたようにルビー。だから私は、私のルートでこれをやっている:

シンプルなレールで

get 'orders/return' => 'orders#returnB'

+1

あなたはそれが「コントローラに直接行く」は何を意味するのですか?すべてがコントローラに最初に行きます。あなたはどんなURLを打っていますか?ルーティングはどのように見えますか?私はまた、通常のパラメータ命名規則を守ることを強く考えています。そして、適切にインデントする。 –

+0

これは、コントローラの 'returnB'メソッドに行くためにルーティングしたからです。 Railsは常に最初にコントローラに当たるでしょう。あなたは注文を破棄するためにgetリクエストを使うべきではありません。達成しようとしている機能を説明できますか?ビューを表示したい場合、ユーザーはフォームを記入し、提出するとOrderは破棄されますか? –

+0

あなたが言及する方法で::取得し、いくつかの破壊操作を行っているコントローラ –

答えて

0

がレンダリングされ、コントローラののと同じ名前で、要求は、第1のコントローラと、ビューテンプレートに当たる流れ。

私はあなたがリクエストフォームをレンダリングする前に、第1のコントローラに当たっている理由です

view/orders/returnB.erb 

で定義されたフォームを持っていると思います。フォームを他のビューテンプレートに移動することをお勧めします。

+0

どこに配置すればよいですか?テンプレートが見つからないというエラーが表示されます。 –

+0

フローを別のコントローラにリダイレクトするか、別のビューテンプレートのレンダーパスを指定することで、デフォルトの動作を防ぐことができます。あなたがここで達成しようとしていることを詳しく記述できますか?また、ビューディレクトリには他にどのようなビューテンプレートがありますか? –

0
にあなたのルートを変更し

:を破壊するために使用する必要があります削除

delete 'orders/return' => 'orders#return_order' 

変更フォームへ:

<h1>Return a Book</h1> 
<%= form_tag("/orders/return", method: "delete") do %> 
<div class="form-group"> 
    <%= label_tag :ID, "ID" %> 
    <%= text_field_tag :ID, nil, class: "form-control" %> 
</div> 
<%= submit_tag "Submit", class: "btn btn-default" %> 
<% end %> 

return_orderからreturnBから変更アクション名をメソッド名を書くための権利条約ではありませんよう。

変更コントローラのコードに:

def return_order 
    @order = Order.find_by_id(params[:ID]) 
    @order.destroy 
    respond_to do |format| 
    format.html { redirect_to orders_url, notice: 'Order was destroyed.' } 
    format.json { head :no_content } 
    end 
end 
+0

削除しないでください。 –

+0

スタックトレースを投稿してください。 – dp7

+0

'return'は予約語です。メソッドを定義するために使用できるかどうかはわかりません。 http://www.rubymagic。org/posts/ruby​​-and-rails-reserved-words – sshah

関連する問題