Question

Woo. Ma première question.

Je sens que je suis sur quelque chose assez basique dans la construction de ma forme. J'utilise attachment_fu et ne peut pas obtenir ce formulaire pour transmettre quoi que ce soit en plus des données de fichiers. Un profil has_many utilisateur et un documents has_many profil.

Ma forme ressemble à ceci:

<%= error_messages_for :document %>

<% form_for([@user, @profile, @document], :html => {:multipart => true }) do |f| -%>
  <p>
    <label for="document">Upload A document:</label>
    <%= f.file_field :uploaded_data %>
  </p>
 <%= f.label :description%>
 <%= f.text_field :description%>
  <p>
    <%= submit_tag 'Upload' %>
  </p>
<% end -%>

Et voici le contrôleur:

  before_filter :require_user, :get_profile

  def new
    @document = @profile.documents.build
  end

  def create
    @document = @profile.documents.build(params[:document])

    if @document.save
      flash[:notice] = 'Your document was successfully created.'
      redirect_to document_url(@document)     
    else
      render :action => :new
    end
  end

  private

  def get_profile
    @user = current_user
    @profile = @user.profiles.find(params[:profile_id])
  end

Les journaux indiquent toutes les données d'image s'affichés, mais je ne peux pas passer la description ou, plus important encore, le profile_id, qui est la clé étrangère dans mon modèle de document. J'étais coincé sur cette toute la nuit, et ne peut pas penser à quelque chose de nouveau ce matin. Toute aide serait grande.

Était-ce utile?

La solution

Pour la profile_id vous besoin de quelque chose comme:

<%= f.hidden_field :profile_id %>

Ce qui dans votre contrôleur, vous obtiendrez à l'aide params[:document][:profile_id] si nécessaire. Bien que d'essayer de deviner ce que votre code est en train de faire, je pense que params[:profile_id] est déjà réglé de tout ce que la route vous à ce contrôleur.

Je ne sais pas pourquoi vous ne voyez rien pour la description. Il devrait arriver dans votre contrôleur comme params[:document][:description].

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top