J'ai un formulaire d'événement avec des modèles d'attributs imbriqués. Les modèles supplémentaires sont rendus après la sélection d'un client dans une zone de sélection. Un observateur surveille et appelle une action de contrôleur qui rend un partiel contenant les champs_ pour les modèles imbriqués. Le problème que je rencontre est que je ne peux pas passer le bloc 'form' de l'événement à la partie nouvellement rendue - au moins je ne peux pas comprendre comment ...Passage d'un objet de formulaire à un rendu partiel à partir d'une requête ajax
Le code ci-dessous soulève l'erreur: "mal nombre d'arguments (0 pour 1) ". Toute aide ou suggestion est appréciée. Comme mentionné ci-dessous, je suis également prêt à ré-implémenter ceci en utilisant JavaScript discret si vous pouvez fournir un exemple pour ce scénario.
Formulaire événement:
<%- form_for @event do |form| %>
<%= select_tag :id=>event_client_id %>
<%= observe_field :event_client_id, url => {:action => 'client_questions'}, :with => "'client_id=' + encodeURIComponent(value)+'&event_id='+#{@event.id} %>
Contrôleur événement
def client_questions
@event = Event.find(params[:event_id])
@client = Client.find(params[:client_id])
@client_questions = @client.questions.active
respond_to do |format|
format.js {
render :update do |page|
page[:client_questions].replace_html :partial => 'client_questions', :layout => false
end
}
end
end
_client_questions.html.erb partielle
<%- form.fields_for :client, @client do |client| %>
<%= client_text_field :name %>
<%- client.fields_for :questions do |question| %>
<%=question.text_field :content %>
Un conseil: utilisez javascript discret http://en.wikipedia.org/wiki/Unobtrusive_JavaScript – marcgg
Je suis prêt à faire ce changement. Pouvez-vous donner un exemple pour ce scénario? J'utilise évidemment un prototype dans cette application, donc vous pouvez tirer parti de cette bibliothèque. –
L'utilisation de js non intrusif ne fait aucune différence dans ce scénario. Bien qu'il soit considéré comme une meilleure pratique, il n'est pas pertinent ici. Je voudrais que cette application soit discrète mais comme j'ai hérité du code de quelqu'un d'autre, je n'avais pas ce choix. –