Le rendu partiel à partir d'un contrôleur dans les rails
J'ai un formulaire d'ajout de lignes de la DB via distance => true. Je veux ajouter de nouvelles données à une table, mais ne peut pas obtenir l'affichage correct pour le rendu.
Comme de maintenant, c'est le rendu de l'ensemble du spectacle.html.erb page pour la nouvelle entrée, mais je tiens à la disposition d'une version minimale d'ajouter, comme un . Est-il un moyen rapide de dire à mon contrôleur de la vue qu'à rendre après l'insertion dans la db? Je veux rendre mon partiel nommé _newly_added.html.erb
Mon Contrôleur
def new
@task = Task.new
render :partial => "/tasks/newly_added", :locals => { :t => @task }
end
Merci!!
MODIFIER
Je pense que ce dont j'ai besoin est juste une solution de rechange "show".
J'ai trouvé que la méthode que j'avais besoin de changement a été fait ceci:
def create
@task = Task.new(params[:task])
respond_to do |format|
if @task.save
format.html { redirect_to @task, notice: 'Task was successfully created.' }
format.json { render json: @task, status: :created, location: @task }
else
format.html { render action: "new" }
format.json { render json: @task.errors, status: :unprocessable_entity }
end
end
end
J'ai juste besoin de faire une alternative afficher la vue, et puis de dire ce à redirect_to ce point de vue.
tr
et de rendre le nouvel objet. Ensuite, vous pouvez juste obtenir les données de réponse de votre appel Ajax et de mettre le code html généré dans votre table. Pour ce faire, utilisez un respond_to :js sans mises en page et d'utiliser un spécifique partielleOriginalL'auteur nathan | 2012-11-13
Vous devez vous connecter pour publier un commentaire.
Édité par les changements dans votre question. Toutefois, rien ne change vraiment. Vous êtes à penser à des choses mauvaises, et la nécessité d'ajuster la façon dont vous pensez. Vous n'avez pas besoin d'un autre spectacle, vous devez gérer la format.js demande.
Partielle doit être rendue dans un JavaScript de réponse, pas le contrôleur. Le contrôleur ressemble plus à ça:
Puis, dans les vues/tâches/créer.js.café
Ce qui se passe ici est que le navigateur fait un appel à
create.js
. Le contrôleur répond avec lecreate.js
modèle, en raison de larespond_to
du blocformat.js
. Lej
échappe le contenu de la_newly_added.html.erb
fichier, et le contenu de celui-ci sont ajoutées à la table. Le contrôleur n'a pas d'interagir avec la vue existante, au lieu de cela, le JavaScript est envoyé au navigateur, et il interagit avec la vue.Change un peu si vous utilisez un client-côté MVC framework comme épine Dorsale ou de la Braise, mais vous n'avez pas spécifié que donc je suis en supposant que vous allez avec le stock de Rails.
Comme avec les nouvelles, de manière à créer. Rien ne change vraiment, mais j'ai ajusté ma réponse à votre édité question.
Je l'avais essayé plus tôt à pas de l'emporter, mais retravaillé après avoir vu votre post et il a fait le tour. merci!
Pas de problème! Vous pouvez prendre un coup d'oeil à Ryan Bates excellent railscasts sur ceci: railscasts.com/episodes/136-jquery-ajax-revised ... le Pro de l'adhésion est le meilleur $9 je passe tous les mois.
Je voudrais ajouter que vous avez à utiliser quelque chose comme ceci: stackoverflow.com/a/5731237/458177 pour ne pas obtenir une mise en page rendus!!
OriginalL'auteur Tim Sullivan