3

Как я могу прикрепить файл к почте с помощью form_for? До сих пор он дает мне ошибку:Rails 3, Action Mailer, вложения, form_for, email

ActiveRecord :: StatementInvalid в UsersController # создать

NoMethodError не определено метод `имя» для ноль: NilClass: INSERT INTO "пользователей" ("created_at", "электронная почта", «file_field», «name», «text_field», «updated_at»). VALUES (?,?,?,?,?,?)

Это то, что я придумал.

class UserMailer < ActionMailer::Base 
    default :from => "[email protected]" 

    def registration_confirmation(user) 
     @user = user 
     unless user[:file_field].nil? 
      file=user[:file_field] 
      attachments[file.original_filename] = File.open(file.path, 'rb'){|f| f.read} 
     end 
    mail(:to => user.email, :subject => "Registered") 
    end 
end 

Посмотреть

<%= form_for @user, :html => {:multipart => true} do |f| %> 
<div class="field"> 
    <%= f.label :file_field %><br /> 
    <%= f.file_field :file_field %> 
</div> 
<div class="field"> 
    <%= f.label :name %><br /> 
    <%= f.text_field :name %> 
</div> 
<div class="field"> 
    <%= f.label :email %><br /> 
    <%= f.text_field :email %> 
</div> 
<div class="actions"> 
    <%= f.submit %> 
</div> 
<% end %> 

Создать действие

def create 
@user = User.new(params[:user]) 

    if @user.save 
UserMailer.registration_confirmation(@user).deliver 
    redirect_to @user 
    else 
    render action: "new" 
    end 
end 

ответ

1

Это горячая тема на StackOverflow, не забудьте проверить другие темы. Они действительно неудовлетворены и должны решить вашу проблему.

например: Solution 1, Solution 2, Solution 3

Если это не получится, вернусь, и мы обязательно запустят другую почту крепежной резьбы.

Смежные вопросы