Вопрос

Ууу.Мой первый вопрос.

У меня такое чувство, что я упускаю из виду что-то довольно простое в построении моей формы.Я использую attachment_fu и не могу заставить эту форму передавать что-либо, кроме данных файла.Пользователь имеет множество профилей, а профиль имеет множество документов.

Моя форма выглядит следующим образом:

<%= 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, который является внешним ключом в моей модели документа.Я зациклился на этом всю ночь, и сегодня утром не могу придумать ничего нового.Любая помощь была бы большой.

Это было полезно?

Решение

Для profile_id вам понадобится что-то вроде:

<%= f.hidden_field :profile_id %>

Который в вашем контроллере вы получите при использовании params[:document][:profile_id] если понадобится.Хотя, пытаясь угадать, что делает ваш код, я подозреваю, что params[:profile_id] уже установлен с любого маршрута, который привел вас к этому контроллеру.

Я не уверен, почему вы ничего не видите по описанию.Это должно поступать в ваш контроллер как params[:document][:description].

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top