2013-01-06 19 views
7

で見られるように、私はRuby on Railsのを勉強していますつまりガイド、http://guides.rubyonrails.org/layouts_and_rendering.htmlインスタンス変数をredirect_toメソッドに渡すことに関する混乱。 Railsのガイド

で「レイアウトとレンダリング」のトピックは、私がredirect_toメソッドにインスタンス変数を渡すことについて混乱しています。これはどのように可能ですか?私はredirect_toが別のウェブページやURLにリダイレクトするのに関係があると思った。それは、次の言うガイドに与えられた例では

2.2.2

アクションのビューをレンダリングしますが、内の異なるアクション に対応してビューをレンダリングしたい場合同じテンプレート、あなたは ビューの名前をレンダリング使用することができます。

def update 
    @book = Book.find(params[:id]) 
    if @book.update_attributes(params[:book]) 
    redirect_to(@book) 
    else 
    render "edit" 
    end 
end 

レンダリング「編集」は完全な意味を持ち、新しいフォームを再びレンダリングします。しかし、世界ではredirect_to(@book)で何が起こっているのですか?正確にそれがレンダリングされ、ブックオブジェクトはどのようにリダイレクトされますか?ところで、本モデルでは、列、名前、著者、ページ等...

答えて

18

redirect_to documentation

redirect_to( options = {}、response_status = {}) ブラウザをオプションで指定されたターゲットにリダイレクトします。 レコード - URLは、 という名前のURLを参照するオプションでurl_forを呼び出して生成されます。

1がないときにredirect_to(@book)@bookidで特定のレコードです。

したがって、関連付けられたレコード(この場合は@book)の表示メソッドがテンプレートとして使用されます。上記に加えて

、あなたはこれらのパスを定義するroutes.rbファイルを見れば、あなたが今、このルートは基本的に

books GET /books(.:format)     books#index 
      POST /books(.:format)     books#create 
new_book GET /books/new(.:format)    books#new 
edit_book GET /books/:id/edit(.:format)   books#edit 
    book GET /books/:id(.:format)    books#show 
      PUT /books/:id(.:format)    books#update 
      DELETE /books/:id(.:format)    books#destroy 
(あなたが rake routesを実行することによって見ることができる)として翻訳され

resources :books 

に気づくでしょう

+0

優れています。どうもありがとうございました!クリスタルクリア! –

+0

これはありがとう!私のためにそれをクリアした –

0

を持っていることは、たとえば、ブックにリダイレクトするよ "/書籍/ 65"

+0

URLは/ myapp/books/65と65であるparamsハッシュを通過し、正確にredirect_to(@book)となります。これにより、書籍65の詳細を表示するページに移動しますか?また、params [:book]を持つparamsハッシュはどうですか?これは何ですか?すべてのレコードを含むフォームポストメソッド? –

関連する問題