Маршрут терпит неудачу с одной страницы, преуспевает с другой - PullRequest
0 голосов
/ 14 октября 2010

У меня есть один бит javascript, который запускает ajax-запрос, результат которого загружается во всплывающее диалоговое окно.

Это один и тот же javascript во всех случаях, но в одном случае маршрут заканчивается неудачей.

Со страницы new_army_list:

Started POST "/army_lists/preview" for 127.0.0.1 at 2010-10-13 21:42:15 -0400
Processing by ArmyListsController#preview as */*

Со страницы edit_army_list:

Started POST "/army_lists/preview" for 127.0.0.1 at 2010-10-13 21:40:35 -0400

ActionController::RoutingError (No route matches "/army_lists/preview"):


Rendered /home/bluepojo/.rvm/gems/ruby-1.9.2-p0/gems/actionpack-3.0.0/lib/action_dispatch/middleware/templates/rescues/routing_error.erb within rescues/layout (1.3ms)

Рассматриваемый JavaScript:

function preview() {
  $.facebox(function() {
          var post_data = $('form').serialize();
          $.post('/army_lists/preview', post_data, function(data) {
                   $.facebox(data);
            });
        });
  }

Есть идеи, что происходит? Я не могу понять, с чего начать отладку.

ОБНОВЛЕНИЕ: Маршрут:

preview_army_list POST   /army_lists/preview(.:format) {:controller=>"army_lists", :action=>"preview"}

ОБНОВЛЕНИЕ2: Просмотров

application.html.haml

!!! XML
!!!
%head
  %title
    Skirmisher
  = stylesheet_link_tag 'screen'
  = stylesheet_link_tag 'facebox/facebox'
  = yield :stylesheets
  = javascript_include_tag 'http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js'
  = javascript_include_tag 'facebox/facebox'
  = yield :javascripts
  = csrf_meta_tag
%body
  #wrapper
    #wrapper-top
      = yield

  = render :partial => 'shared/get_satisfaction_tab'

edit.html.haml

= render :partial => 'form'

new.html.haml

= render :partial => 'form'

_form.html.haml

- content_for :javascripts do
  = javascript_include_tag 'new_list'

= form_for @army_list do |f|
  -if @army_list.errors.any?
    #errorExplanation
      %h2= "Fix #{pluralize(@army_list.errors.count, "error")} to save your list:"
      %ul
        - @army_list.errors.full_messages.each do |msg|
          %li= msg
  .paper-super-wrapper
    .paper-wrapper
      = render :layout => 'shared/sidebar' do
        %li
          = f.submit 'Save', :id => 'save'
        %li.last
          %a{:href => '#', :title => 'Preview', :id => 'preview'}
            Preview
      = render :partial => 'floating_label', :locals => {:label => 'Title'}
    .paper-wrapper
      = render :layout => 'shared/paper' do
        = f.text_field :title, :class => 'list-input'
    .paper-wrapper
      = render :layout => 'floating_label', :locals => {:label => 'Army List'} do
        %li.first-common.last
          #new-section-button.button-div
            + Section
          #new-unit-button.button-div
            + Unit
      = render :layout => 'shared/paper' do
        = f.text_area :list, :class => 'list-input', :id => 'the-list'
      = render :partial => 'floating_label', :locals => {:label => 'Tags'}
    .paper-wrapper
      = render :layout => 'shared/paper' do
        = f.text_field :tag_list, :class => 'list-input'

1 Ответ

1 голос
/ 18 октября 2010

Оказалось, что я ловил параметр _method: put, не осознавая его, так как я сериализовал форму.

Исправлена ​​проблема путем извлечения значений по отдельности.

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