Rails 3.1: Der neue Weg für die Verwendung von 'respond_to ... format.js' ohne die 'Seite' variable

Ich bin versucht, zu aktualisieren Ruby on Rails auf die version 3.1. Ich folgte der Upgrade auf Rails 3.1 screencast und alles scheint zu funktionieren, außer für Anweisungen, wie

format.js { render(:update) { |page| page.redirect_to @article } }

In viele Controller habe ich einen code wie den folgenden:

def create
  ...

  respond_to do |format|
    format.js { render(:update) { |page| page.redirect_to @article } }
  end
end

In allen oben genannten Fällen, wenn ich versuche zu senden Verwandte Formen der Durchführung JS-Anfragen, bekomme ich die folgende Fehlermeldung:

ActionView::MissingTemplate (Missing template articles/update, application/update with {:handlers=>[:erb, :builder, :coffee], :formats=>[:js, :html], :locale=>[:en, :en]}. Searched in:
  * "/<MY_PROJECT_PATH>/app/views"
):

app/controllers/articles_controller.rb:114:in `create'

Rendered /<...>/.rvm/gems/ruby-1.9.2-p136/gems/actionpack-3.1.0/lib/action_dispatch/middleware/templates/rescues/missing_template.erb within rescues/layout (0.3ms)

Ich weiß, dass problem wurde im Zusammenhang mit RJS-templates, weil Sie nicht mehr verfügbar in der Version 3.1. Also, um zum ausführen von JavaScript-code in meinen controller-Dateien, die ich kann\soll\einfügen können einige JavaScript-code wie in dem folgenden Beispiel:

format.js { render :js => "alert('Hello Rails');" }

BTW : ...aber, ist es empfohlen, JavaScript-code direkt in eine controller-Datei?

Berücksichtigung der oben genannten code in die create controller-Aktion, würde ich gerne umleiten Benutzer zu den @article Pfad nach einem erfolgreichen Antragstellung. Kann ich tun:

format.js { render :js => "window.location.replace('#{article_url(@article)}');" }

..aber, wie kann ich das gleiche tun durch folgende das "Ruby on Rails-Weg, um Dinge zu tun"? Wie RoR 3.1 würde mit diesen Fällen?

InformationsquelleAutor Backo | 2011-09-15

Schreibe einen Kommentar