Domanda

Woo. La mia prima domanda.

Ho la sensazione che sto affaccia qualcosa di piuttosto semplice nella costruzione della mia forma. Sto usando attachment_fu e non può ottenere questo modulo per passare nulla oltre ai dati del file. A profili utente has_many e un documenti profilo has_many.

La mia forma è simile al seguente:

<%= 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 -%>

Ed ecco il controller:

  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

I registri mostrano tutti i dati di immagine sempre inviato, ma non posso passare la descrizione o, ancora più importante, la profile_id, che è la chiave esterna nel mio modello di documento. Sono rimasto bloccato su questo tutta la notte, e non riesco a pensare a qualcosa di fresco questa mattina. Qualsiasi aiuto sarebbe grande.

È stato utile?

Soluzione

Per la profile_id avrete bisogno di qualcosa di simile a:

<%= f.hidden_field :profile_id %>

Il che nel controller otterrete ad utilizzare params[:document][:profile_id] se necessario. Anche se a cercare di indovinare ciò che il codice sta facendo, ho il sospetto che params[:profile_id] è già impostato da qualunque percorso si avuto modo di questo controller.

Non sono sicuro perché non si è visto nulla per la descrizione. Dovrebbe essere venuta nel vostro controller come params[:document][:description].

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top