我有两种方法可以做到这一点。
一是使用:locals => {....}
,二是使用@var_name
。我只是想知道哪个更好/更喜欢?我在任何地方都找不到这个问题的答案。
谢谢
我没有经验,但可能您使用 编写的代码较少@var_name
,但是如果假设您有 2 个操作使用不同的对象呈现相同的视图,假设一个使用 foo,另一个使用 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