Ruby w / Sinatra: Могу ли я получить пример запроса jQuery AJAX? - PullRequest
2 голосов
/ 31 января 2011
%a{:href => "/new_game?human_is_first=true", :remote => "true"}
            %span Yes

Выше моя ссылка. Просто интересно, как с этим справиться. Я должен быть в состоянии выполнить некоторые JavaScript. Ниже приведен файл .js.erb со спины, когда я использую рельсы.

$('.welcome_container').fadeOut(500, function(){
  $( '.shell' ).html( "<%= escape_javascript( render( :partial => "board/board" ) ) %>" );
  $('.board_container').fadeIn(500);
});

Итак, мой вопрос: как только / new_game вызывается в app.rb, я хочу иметь возможность отправить некоторый javascript на текущую страницу (не покидая страницу и получить частичное отображение)

1 Ответ

8 голосов
/ 01 февраля 2011

См. мой ответ на другой ваш недавний вопрос , чтобы получить исчерпывающую информацию о настройке отправки и получения частичных HTML-кодов в производственном приложении Sinatra.

Поскольку Sinatra - это удобная и легкая среда, вы можете(вынужден?) придумать свой собственный рабочий процесс и код для реализации частичных функций и обработки таких вызовов.Вместо моего явного маршрута на частичный, вы можете выбрать один маршрут на основе регулярных выражений, который ищет правильные данные на основе переданного URL или параметра.

В общем, если вы хотите, чтобы Синатра отвечалк пути, вам нужно добавить маршрут.Итак:

get "/new_game" do
  # This block should return a string, either directly,
  # by calling haml(:foo), erb(:foo), or such to render a template,
  # or perhaps by calling ...to_json on some object.
end

Если вы хотите вернуть частичное без макета и используете представление, обязательно передайте layout:false в качестве опции помощнику.Например:

get "/new_game" do
  # Will render views/new_game.erb to a string
  erb :new_game, :layout => false
end

Если вы хотите вернуть ответ JSON, вы должны установить соответствующие данные заголовка:

get "/new_game" do
  content_type :json
  { :foo => "bar" }.to_json
end

Если вы действительно хотите вернуть необработанный код JavaScript из вашего обработчикаи затем выполните это ... хорошо, вот как вы возвращаете JS:

get "/new_game" do
  content_type 'text/javascript'
  # Turns views/new_game.erb into a string
  erb :new_game, :layout => false
end

Вы должны получить JS и * вздрогнуть * eval() это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...