Frage

Woo. Meine erste Frage.

Ich habe ein Gefühl, das ich etwas ziemlich einfach in der Konstruktion von meiner Form mit Blick auf bin. Ich verwende attachment_fu und kann dieses Formular nicht bekommen nichts außer den Dateidaten zu übergeben. Ein Benutzer has_many Profile und ein Profil has_many Dokumente.

Meine Form sieht wie folgt aus:

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

Und hier ist der 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

Die Protokolle zeigen alle die Bilddaten geschrieben zu werden, aber ich kann die Beschreibung nicht passieren oder, was noch wichtiger ist, die profile_id, die der Fremdschlüssel in meinem Dokumentenmodell ist. Ich war auf die ganze Nacht stecken und denken nicht an diesem Morgen von etwas frisch. Jede Hilfe wäre toll.

War es hilfreich?

Lösung

Für die profile_id müssen Sie so etwas wie:

<%= f.hidden_field :profile_id %>

Welche in Ihrem Controller, den Sie bei Verwendung params[:document][:profile_id] bekommen, wenn nötig. Obwohl von dem Versuch zu erraten, was Ihr Code tun ist, ich, dass params[:profile_id] vermuten schon aus welcher Route festgelegt ist Sie zu diesem Controller bekam.

Ich bin nicht sicher, warum Sie sehen, nichts für die Beschreibung. Es sollte in Ihren Controller wie params[:document][:description] kommen werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top