2017-04-27 6 views
-2

私はこのチュートリアルに従っています:Youtube rails tutorialこれらはどのようにレール機能に接続されていますか?

彼は人々が本を追加したり、レビューしたり、評価したり、削除したりすることができる基本的なウェブサイトを作成しています。メインコントローラスクリプトでは、彼はそうのような新しい本を追加する「新しい」関数を定義します。

def new 
    @book = Book.new 
end 

def create 
    @book = Book.new(book_params) 

    if @book.save 
     redirect_to root_path 
    else 
     render 'new' 
    end    
end 

def book_params 
    params.require(:book).permit(:title, :description, :author) 
end 

彼はまた、そのためのレコード生成機能を使用しています。彼はnew.html.erbという名前の新しいビューを持っています。これは、ユーザーが新しいブックを追加できるフォームを実際に表示します。これはコントローラに表示された「新しい」関数に関連しています。 new.html.erbファイルはこれだけ持っている:私はそれのほとんどを得る

<h1>new book</h1> 
<%= render "form" %> 

を、私は取得しないことは、「新しい」機能は何もして、「作成」機能をしないことから、されています"新しい"機能のためのすべての仕事をしている人、どのように関係していますか?私はこれを求めています。なぜなら、「新しい」関数はcreate関数を "呼び出し"ませんが、 "作成"関数が行う作業はWebページに表示されるからです。彼らは "@ブック"を通してつながっていますか?

答えて

1

newアクションレンダリングnew.html.erbは、新しいブックを作成するフォームを含んでいます。ユーザーがそのフォームのsubmitをクリックすると、createアクションで新しいブックが作成されます。

Railsの仕組みを完全に理解するために、さらにチュートリアルに進み、guidesを読むことをお勧めします。

+0

ありがとうございました! – Dinukaperera

0

新しいアクションは、フォームを表示して初期化します。作成ボタンをクリックする前にあなたが完了したことは、BooksControllerの作成アクションに送信されます。このアクションは、paramsで新しいBookオブジェクトを作成し、DBに保存します。 これはMVCパターンです。あなたはそれについて読むべきです:https://www.sitepoint.com/the-basics-of-mvc-in-rails-skinny-everything/

1

Railsでnewアクションは、リソースを作成するためのフォームを表示します。 createは、ユーザーがフォームを投稿したときに応答します。

class BooksController < ApplicationController 
    # GET /books/new 
    def new 
    @book = Book.new 
    end 

    # POST /books 
    def create 
    @book = Book.new(book_params) 
    # ... 
    end 
end 

「新しい」機能が全く 機能を作成する「コール」しないので、私はこれを求めていますが、作品「作成」機能が Webページに表示されません。彼らは "@ブック"を通してつながっていますか?

WebアプリケーションとMVCの仕組みについて根本的に混乱しています。 Webアプリケーションは、ユーザーからの要求に応答します。サーバーは応答を送信し、その応答を送信します。プログラムは終了する。サーバーは、ユーザーがデスクトッププログラムのようにクリックするのを待っていません。*

これらはまったく接続されていません。 newおよびcreateは、異なるパスで異なる種類の要求に応答します。同じリクエストで両方が呼び出されることはありません。

+0

*例外がありますが、これは一般にWebアプリケーションの動作方法です。 – max

関連する問題