9

http://ruby.railstutorial.org/にあるMichael Hartl のチュートリアルを読んでいます。基本的には、ユーザーがメッセージを投稿し、他のユーザーが返信を残すことができるメッセージ ボード アプリです。ただいま作成中ですUsers。内部は次のUsersControllerようになっています。

    class UsersController < ApplicationController
      def new
        @user = User.new
      end

      def show
        @user = User.find(params[:id])
      end

      def create
        @user = User.new(params[:user])
        if @user.save
          flash[:success] = "Welcome to the Sample App!"
          redirect_to @user
        else
          render 'new'
        end    
      end
    end

著者は、次の行は同等であると言います。これは私にとって理にかなっています:

    @user = User.new(params[:user])
    is equivalent to
    @user = User.new(name: "Foo Bar", email: "foo@invalid",
             password: "foo", password_confirmation: "bar")

redirect_to @userにリダイレクトしshow.html.erbます。それはどのように正確に機能しますか?に行くことをどのように知っていshow.html.erbますか?

4

3 に答える 3

16

これはすべて、Rail の安らかなルーティングの魔法によって処理されます。具体的にはredirect_to、特定のオブジェクトを実行するとshow、そのオブジェクトのページに移動するという規則があります。Rails はそれ@userがアクティブなレコード オブジェクトであることを認識しているため、オブジェクトの表示ページに移動したいと認識していると解釈します。

以下は、Rails Guide の適切なセクション- Rails Routing from the Outside In の詳細です。:

# If you wanted to link to just a magazine, you could leave out the
# Array:

<%= link_to "Magazine details", @magazine %>

# This allows you to treat instances of your models as URLs, and is a
# key advantage to using the resourceful style.

基本的に、ファイルで安らかなリソースを使用routes.rbすると、ActiveRecord オブジェクトから直接 URL を作成するための「ショートカット」が得られます。

于 2012-05-07T01:34:30.993 に答える
-4

リソースルーティングhttp://guides.rubyonrails.org/routing.htmlについて読むことをお勧めします。

于 2012-05-07T01:32:42.850 に答える