Pergunta

Woo. Minha primeira pergunta.

Tenho a sensação de que estou negligenciando algo bastante básico na construção da minha forma. Estou usando o APPLENT_FU e não consigo fazer com que este formulário passe nada além dos dados do arquivo. Um usuário possui perfis e um perfil Has_Many Documents.

Meu formulário se parece com o seguinte:

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

E aqui está o controlador:

  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

Os logs mostram todos os dados da imagem sendo publicados, mas não posso passar na descrição ou, mais importante, o perfil_id, que é a chave estrangeira no meu modelo de documento. Eu fiquei preso nisso a noite toda e não consigo pensar em nada fresco esta manhã. Qualquer ajuda seria ótimo.

Foi útil?

Solução

Para o profile_id Você precisará de algo como:

<%= f.hidden_field :profile_id %>

Que no seu controlador você receberá usando params[:document][:profile_id] se necessário. Embora tentasse adivinhar o que seu código está fazendo, suspeito que params[:profile_id] Já está definido a partir de qualquer rota que você o levasse a este controlador.

Não sei por que você não está vendo nada para a descrição. Deve estar entrando no seu controlador como params[:document][:description].

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top