5

これを行うには2つの方法があります。

最初は使用すること:locals => {....}で、もう 1 つは使用すること@var_nameです。私はどちらがより良い/好ましいのか疑問に思っていますか? これに対する答えはどこにも見つかりませんでした。

ありがとう

4

1 に答える 1

7

私には経験がありませんが、おそらく を使用してコードを書くことは少なくなります@var_nameが、同じビューを異なるオブジェクトでレンダリングする 2 つのアクションがあるとします。1 つは foo で、もう 1 つは bar であるとします。

def foos
  foos = Foo.all
  erb :something, locals: {list: foos} 
end

def foos
  bars = Foo.all
  erb :something, locals: {list: bars} 
end

@vars の代わりに、中身を正確に表していない同じ var_name を使用する必要があります。のように: それは何のリストですか??

def bars
  @list = Bar.all
  erb :something
end

def foos
  @list = Foo.all
  erb :something 
end

あるいは、次のような同じ種類のオブジェクトをレンダリングするときにほとんどの場合、ビューを再利用するため、@vars を使用することをお勧めします。

def foos
  @foos = Foo.all
  erb :something
end

def bar_foos
  @foos = Foo.where(bar: true)
  erb :something 
end

したがって、ほとんどの場合異なるコンテキストで使用されるパーシャルをレンダリングするときに、ローカルを使用したいだけでしょう。@new_bar および既存の @bar をレンダリングするときのフォームのように。ほんの一例です。または、たとえば @current_user または単純な @user

于 2012-12-23T18:48:56.280 に答える