2010-08-21 9 views
23

utknąłem w (podobno) prosty problem. W moim event_controller Mam działania i_like_it:Renderowanie innego pliku JavaScript w odpowiedzi

def i_like_it 
    @event = Event.find(params[:id]) 

    ... # logic 

    respond_to do |format| 
     format.js 
    end 
    end 

W moim przypadku „i_like_it” nazywa się: metoda => PUT (to jest Ajax wezwanie „i_like_it.js.erb” zostanie zwrócony jako skrypt i to wil wykonany w przeglądarce.)

chciałbym uczynić złożyć Javascript pod inną nazwą (nie i_like_it.js.erb), ale nie znalazłem żadnej opcji w Rails API dokumenty.

respond_to do |format| 
    format.js { render ??? } 
end 

Szyny mogą uczynić z wanilii JavaScript: opcja js, ale Nie chcę użyć JavaScript w kontrolerze.

Masz jakieś sugestie?

Dziękuję Alessandro DS

Odpowiedz

7

Spróbuj render :template => 'your_file_here' zamiast

Dokumentacja render opisuje kilka innych opcji zbyt.

42

Jeśli zrobić:

respond_to do |format| 
    format.js { render :action => "different_action" } 
end 

będzie załadować RAILS_ROOT/app/views/swój kontroler /different_action.js.erb zamiast.

Blok format.js zapewnia, że ​​jeśli jest żądaniem .js, domyślnie są ustawione odpowiednie nagłówki i domyślnie szuka .js.erb lub .js zamiast .html.erb.

Możesz również użyć render: file, aby wyrenderować dowolny dowolny plik w systemie plików, w którym znajduje się JS, lub możesz użyć dowolnej z pozostałych zwykłych opcji renderowania. There are a few of them.

+0

W moim przypadku mam do renderowania pliku js z innego kontrolera, a następnie wykonywali: template => „my_file” jest bardziej właściwe, dziękuję Alessandro DS –

+0

A jeśli chcę renderować my_javascript.js. erb innego kontrolera? – zer0uno

+0

w jaki sposób wywołujesz plik z innego folderu, takiego jak folder współdzielony, który nie jest powiązany z kontrolerem? gdzie zaczyna się ścieżka względna i czy możesz podać przykład jednego (na przykład root/app/views/shared/vote.js.erb)? – ahnbizcad

Powiązane problemy