Rails 3.1 и ajax создали формы не отправляя - PullRequest
4 голосов
/ 05 октября 2011

Я пытаюсь создать встроенное редактирование в проекте rails 3.1. Я создаю форму для редактирования копии через ajax, а затем пытаюсь отправить изменения также через ajax.

Однако форма не хочет связываться, и форма не будет отправлена ​​на формы, созданные через ajax.

теперь делает кто-нибудь, как связать форму после того, как она создана

Я использую edit.js.erb, чтобы добавить форму:

$("#nutri_<%= @nutritioninfo.id %>").after('<%= escape_javascript(render(:partial=>'admin/products/nutrition_edit',  :locals=>{:nutritioninfo=>@nutritioninfo}))%>');

и частичное выглядит так:

$%tr.hidden.edit-nutri{ :class => cycle('odd', 'even', :name => "nutrition-hidden-rows"), :id=>"nutri_edit_#{nutritioninfo.id}" }
  = simple_form_for [:admin,site,product,nutritioninfo], :remote=>true do |f|
  %td &nbsp;
  %td= f.input :title,:label => false
  %td= f.input :parent_id, :as=>:select, :collection=>nutritioninfo.possible_parents,:label => false
  %td= f.input :per100g, :label => false
  %td= f.input :info, :label => false
  %td= f.input :highlight,:as=>:boolean, :label => false
  %td.edit= f.button :submit, t('admin.general.save').humanize
  %td.remove=link_to t('admin.general.cancel').humanize, "#", :remote => true, :class=>"cancel-toggle"

У кого-нибудь есть идеи, как связать форму?

Ответы [ 2 ]

1 голос
/ 04 декабря 2011

Проблем может быть немного.

Прежде всего, может быть, очевидно, но требуется ли вам jquery_ujs в application.js?Если у вас нет никаких действий с remote: true, это может быть причиной.

Во-вторых, это даже вызывает отправку в форме?Помните, что при использовании ajax вы должны использовать 'live ()' вместо 'bind ()' или 'action ()', потому что live будет связывать элементы каждый раз, когда вы перезагружаете форму («связывание» связывает действие только один раз).

Но если отправка продолжается, и у вас нет ответа, вы, вероятно, должны реализовать запрос xhr в контроллере, как сказал Андре Дублин.

Хорошее искусство на рельсах с ajax вы можете сослаться на Использование ненавязчивого JS и AJAX с Rails 3 также, возможно, вам стоит взглянуть на Вместо редактирования RailsCast ?

0 голосов
/ 24 апреля 2012

Так же, как Лешек говорит в своем 2-м пункте: «Помните, что при использовании ajax вы должны использовать« live () »вместо« bind () »или« action () », потому что live будет связывать элементы при каждой перезагрузке форма («связать» связывает действие только один раз). "

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