2009-12-22 10 views
6

Wygląda na to, że ustawienie wielu zmiennych instancji w działaniu (metodzie) kontrolera powoduje problemy w szablonie, tylko zmienna pierwszej instancji została przekazana do szablonu. Czy istnieje jakiś sposób przekazania wielu zmiennych do szablonu? Dzięki! I dlaczego, z perspektywy Rubiego, szablon uzyskuje dostęp do zmiennych instancji w akcji?Jak przekazać parametry z kontrolera do szablonu?

Odpowiedz

4

Możesz również zajrzeć do opcji: locals opcji render. Który akceptuje hash taki, że klucze są symbolami mapującymi do lokalnych nazw zmiennych w twoim szablonie, a wartości są wartościami do ustawienia tych zmiennych lokalnych.

Przykład:

render "show", :locals => {:user => User.first, :some_other_variable => "Value"} 

i ten szablon

User ID: <%= user.id %><br> 
Some Other Variable: <%=some_other_variable%> 

będzie produkować:

User ID: 1<br> 
Some Other Variable: Value 

Kiedy ponowne partials w wielu kontrolerów. Ustawienie zmiennych lokalnych za pomocą opcji: locals jest prostsze i bardziej suche niż użycie zmiennych instancji.

4

nie powinieneś mieć problemu z ustawieniem wielu zmiennych instancji. Na przykład:

class CarsController < ApplicationController 
    def show 
    @car = Car.find(:first) 

    @category = Category.find(:first) 
    end 
end 

pozwoli Ci na dostęp zarówno @car i @category w samochodach/show.html.erb

Powodem tego działa jest niczym nieodłącznym rubin, ale niektóre magia wbudowany w szynach. Railsy automatycznie udostępniają każdej zmiennej instancji ustawionej w akcji kontrolera odpowiedni widok.

Powiązane problemy