Soy nuevo en RoR, pero tengo un éxito decente con la implementación de varias funciones para una aplicación pequeña. Hasta que llegue a este problema ... para el cual no he encontrado ningún problema/pregunta. Para ayudar a reducir mi problema de una forma genérica, esto es lo que tengo:ajax: incendios completos pero ajax: éxito no en una aplicación de rails 3
historia de usuario
usuario se le presenta un formulario para crear temas (nombre de la descripción &), una vez que se crea tópico usuario es presentó la página 'mostrar' que permite al usuario agregar subtemas. A medida que el usuario agrega subtemas, se muestran al usuario en la misma página (aquí es donde estoy tratando de usar ajax).
artefactos de código
modelo ==> topic_request.rb
class TopicRequest < ActiveRecord::Base
has_many :subtopics, :class_name=>"TopicRequest", :foreign_key=>"parent_id"
end
controlador ==> topic_requests_controller.rb
class TopicRequestsController < ApplicationController
expose(:user_topic_requests) {current_user.topic_requests}
expose(:topic_request)
expose(:sub_topic_request) {TopicRequest.new}
def new
end
def create
topic_request.save
if (topic_request.parent_id != nil)
parentreq = TopicRequest.find(topic_request.parent_id)
render :partial => 'subreqs', \
:locals => {:topic_requests => parentreq.subtopics}, \
:layout => false
else
render :show
end
end
def show
end
def index
end
end
new.html.slim
= simple_form_for topic_request, :html => {:class => 'form-stacked'} do |f|
= f.error_notification
fieldset
= f.input :name, :required => true
= f.input :description, :required => true
.actions
= f.button :submit, "Propose Topic"
show.html.slim
# display the parent topic
= topic_request.name
= topic_request.description
#display the form for accepting subtopic requests
= simple_form_for sub_topic_request, \
:url => {:controller => "topic_requests", :action => "create"}, \
:remote => true, \
:html => {:class => 'form-stacked', \
:id => 'new_subtopic_request'} do |f|
= f.error_notification
fieldset
= f.input :name, :required => true
= f.input :description, :required => true
= f.input :parent_id, :as => :hidden,\
:input_html => {:value => topic_request.id}
.actions
= f.button :submit, "Propose Subtopic", \
:class => "btn", :disable_with => "Please wait..."
#subtopic_requests
= render :partial => 'topic_requests/subreqs', \
:locals => {:topic_requests => topic_request.subtopics}
== parcial> _subreqs.html.slim
- topic_requests.each do |onereq|
= onereq.name
= onereq.description
hr
CoffeeScript ==> topic_requests.js.coffee
jQuery ->
new_subreq_form = $("#new_subtopic_request")
if new_subreq_form.length > 0
new_subreq_form.bind 'ajax:before', (e) ->
# console.log 'ajax:before'
new_subreq_form.bind 'ajax:success', (event, data, status, xhr) ->
$("#subtopic_requests").html(data)
new_subreq_form.bind 'ajax:failure', (xhr, status, error) ->
# console.log 'ajax:failure'
new_subreq_form.bind 'ajax:error', (xhr, status, error) ->
# console.log 'ajax:error' # parseerror eg
new_subreq_form.bind 'ajax:complete', ->
$("#topic_request_name").val("")
$("#topic_request_description").val("")
Problema
Creación del subtema sucede, veo nuevos registros en la base de datos. El borrado de los campos de la vinculación 'ajax: complete' también sucede muy bien, veo que los campos de entrada están desapareciendo. Veo topic_requests/_subreqs.html.slim completando con el estado 200. Sin embargo, la página 'show' no muestra los resultados de renderizar el parcial, que es lo que intento capturar en 'ajax: success'.
Cualquier idea para ayudar a depurar o muestras que me refiero a hacer esto es muy apreciada.
Esto funcionó para mí. –
¡Funciona! muchas gracias. – Ritikesh