Я использовал scaffolding для сборки своего приложения RoR, затем добавил другое действие контроллера, называемое apply_configs. он работает нормально (все действия, которые я добавил к методу контроллера, выполняются нормально, и я могу сказать это по журналам на сервере), но я не могу заставить его отобразить нужную страницу после ее выполнения. Я добавил следующее в конец метода apply_configs в файле контроллера
respond_to do |format|
if @l2vpn.update_attributes(params[:l2vpn])
format.html { render action: "show", notice: 'L2vpn was successfully updated.' }
format.json { head :ok }
else
format.html { render action: "edit" }
format.json { render json: @l2vpn.errors, status: :unprocessable_entity }
end
end
На сервере я вижу эти журналы
Started GET "/l2vpns/apply_configs? <long list of params goes here> " for 172.24.67.151 at 2012-03-16 11:32:01 -0700
Processing by L2vpnsController#apply_configs as */*
Parameters: { <long comma separated list of params goes here> }
L2vpn Load (0.4ms) SELECT "l2vpns".* FROM "l2vpns" WHERE "l2vpns"."id" = ? LIMIT 1 [["id", 1]]
Rendered l2vpns/show.html.erb within layouts/application (1.9ms)
Completed 200 OK in 112ms (Views: 12.4ms | ActiveRecord: 1.2ms)
но на самом деле, в отличие от журналов, мой браузер не отображает содержимое show.html.erb, страница браузера не изменяется. Моя цель - показать show.html.erb после выполнения apply_configs.
У кого-нибудь есть идеи, как этого добиться, и почему он не работает, как я ожидал, с указанными выше конфигами?
ОБНОВЛЕННЫЙ КОД после комментария jdl
class L2vpnsController < ApplicationController
respond_to :js, :html, :json
# GET /l2vpns/1
# GET /l2vpns/1.json
def apply_configs
@l2vpn = L2vpn.find(params[:id])
<more code goes here>
flash[:notice] = "Configs applied successfully!"
respond_with(@l2vpn, :location => l2vpns_url)
end
<other controller action definitions go here>
end