j'ai une partie qui contient un formulaire:partielle contenant une forme apparaît dans les deux contrôleurs, mais ne présente pas l'un d'eux
<% form_for :message, :url => { :action => "create" }, :html => { :id => 'form' } do |f| %>
<%= f.error_messages %>
<%= f.label :title, "title" %>
<%= f.text_field :title %>
<%= f.label :tag, "tag" %>
<% if controller.controller_name == "tags" %>
<%= f.text_field :tag_list, :value => @title %>
<% else %>
<%= f.text_field :tag_list %>
<% end %>
<%= f.label :name, "name" %>
<%= f.text_field :name %>
<%= f.label :email, "email" %>
<%= f.text_field :email %>
<%= f.label :title, "message" %>
<%= f.text_area :content %>
<%= f.submit 'submit' %>
<% end %>
J'utilise ceci dans deux contrôleurs: messages et balises. Cela fonctionne bien dans le contrôleur de messages mais pas dans le contrôleur de balises. Quand il est rendu dans les balises # show, il remplit automatiquement le champ tag. Lorsqu'un message est envoyé à partir de tags # show, je suis redirigé vers la racine du site avec une erreur flash "Le tag n'existe pas".
contrôleurtags:
class TagsController < ApplicationController
before_filter :redirect_if_doesnt_exist#, :only => :show
def show
@title = Tag.find(params[:id]).name
@tag = Tag.find(params[:id])
@entries = Entry.paginate(Entry.find_tagged_with(@tag),
:page => params[:page], :per_page => 10, :order => "name")
@messages = Message.paginate(Message.find_tagged_with(@tag),
:page => params[:page], :per_page => 10, :order => "updated_at DESC")
@related_entries = Entry.tagged_with(@tag, :on => :tags)
@related_tags = @related_entries.collect{|x|x.tags}.flatten.uniq
@related_tags.delete(@tag)
end
private
# Redirect if requested tag does not exist
def redirect_if_doesnt_exist
@tag = Tag.find(params[:id]) rescue nil
if @tag.nil? # maybe "or @tag.empty?" could solve the empty tag issue
flash[:error] = 'Tag does not exist.'
redirect_to '/'
end
end
end
Dans le cas où il est clair: La partie est représentée dans la vue, la forme en elle ne vient pas soumettre les données du contrôleur balises et est redirigé. Le partiel fonctionne bien à partir du contrôleur de messages. Ceci est une application Rails 2.3.x. Merci d'avoir lu ma question, votre temps est apprécié.
Vous avez déjà posé la même question: [Formez défaut partiel dans un autre contrôleur] (http://stackoverflow.com/questions/3332655/form-partial-failing-in-other-controller) –