0

ウー。私の最初の質問。

フォームの構成において、かなり基本的なものを見落としているような気がします。私はattachment_fuを使用していますが、このフォームでファイルデータ以外のものを渡すことができません。ユーザーhas_manyプロファイルとプロファイルhas_manyドキュメント。

私のフォームは次のようになります。

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

そして、これがコントローラーです:

  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

ログには、投稿されたすべての画像データが表示されますが、説明、またはさらに重要なことに、ドキュメントモデルの外部キーであるprofile_idを渡すことができません。私はこれに一晩中立ち往生していて、今朝は何も新鮮なことを考えることができません。どんな助けでも素晴らしいでしょう。

4

1 に答える 1

0

あなたのためにあなたは次のprofile_idようなものが必要になります:

<%= f.hidden_field :profile_id %>

必要に応じて、コントローラーでどちらを使用するかを選択しますparams[:document][:profile_id]。あなたのコードが何をしているのかを推測しようとしていることから、私はそれparams[:profile_id]があなたをこのコントローラーに導いたどんなルートからでもすでに設定されているのではないかと思います。

説明に何も表示されない理由がわかりません。としてコントローラーに入力されるはずparams[:document][:description]です。

于 2010-02-12T20:39:52.070 に答える