2016-09-15 5 views
1

誰かが、コントローラからの変数が魔法のようにモジュール属性としてビューにどのように表示されるのか、私に説明できますか?例えばView属性はPhoenixでどのように作成されますか?

、このrender/3コントローラーで:私はテンプレート関数となり、それが配置されていることを理解し

Hello, <%= @user.first_name %> 

defmodule MyApp.UserController do 
    def show(conn, %{"id" => user_id}) do 
    render conn, "show.html", user: Repo.get(User, user_id) 
    end 

は次のように私は、テンプレートで使用できる属性@userを作成しますたとえば、MyApp.UserViewのように表示されます。つまり、@userMyApp.UserViewモジュールの属性です。しかしどうですか?

+1

私の答えの最初の2つの文章はあなたの質問によく答えます:http://stackoverflow.com/a/39391047/320615 – Dogbert

+0

私は見る!ありがとう@Dogbert、これは正解です。私はそれがテンプレートのようなレールのような外観を持っていると想像することができます。あなたの答えを投稿してください私はそれを受け入れる – Grych

答えて

2

コントローラからの変数がモジュール属性としてビューに魔法のように表示される方法を教えてもらえますか?

これらはモジュール属性ではありません。 EExは同じシンタックスを使用し、ユーザがEEx.Engineビヘイビア実行モジュールを使用してその動作をプラガブルにします。 The default EEx Engine converts them toEEx.Engine.fetch_assign!(var!(assigns), unquote(name))Phoenix's Engine converts them toPhoenix.HTML.Engine.fetch_assign(var!(assigns), unquote(name))テンプレートを関数にコンパイルすると、

関連する問題