Я отправляю javascript-запрос в действие контроллера, чтобы попытаться перенаправить на другую html-страницу, если определенные условия не выполняются. Просмотрев несколько вопросов, я пришел к следующему выводу:
def twittertweet
if current_user && current_user.twitter_token
....
else
flash[:notice] = "You must be registered with Twitter to do that."
respond_to do |format|
format.js { render(:update) { |page| page.redirect_to authentications_url } }
end
end
end
Я хочу перенаправить_на аутентификацию_url. Однако происходит вот что:
Started POST "/twittertweet.json" for 127.0.0.1 at 2012-04-11 13:38:27 -0400
Processing by ItemsController#twittertweet as */*
Parameters: {"id"=>"22"}
Category Load (0.3ms) SELECT "categories".* FROM "categories"
Rendered items/update.html.erb within layouts/application (0.0ms)
Completed 200 OK in 112ms (Views: 79.9ms | ActiveRecord: 5.7ms)
Как видите, он даже не пытается выполнить redirect_to authentication_url. Тем не менее, я знаю, что оператор "else" уже достигнут (я поместил операторы puts, чтобы помочь мне это выяснить).
Любые обходные пути для этого?
Обновление Если вы попробуете решение DanS, появится ошибка MissingTemplateError. Он все еще пытается перенаправить на items#update:
ActionView::MissingTemplate (Missing template items/update, application/update with {:handlers=>[:erb, :builder, :coffee], :formats=>[:json], :locale=>[:en, :en]}. Searched in:
* "/Users/dylandrop/Documents/givespend/app/views"
* "/Users/dylandrop/.rvm/gems/ruby-1.9.2-p290/gems/devise-2.0.4/app/views"
):