我试图在Mailboxer Gem中发送带附件的邮件。
我的堆栈是:Rails 4和Ruby 2.1.1
但是,我可以看到使用CarrierWave的附件已作为下面代码中的链接支持。
但是,我完全按照我的设置进行了设置。没有附件的正常消息正常。
这是我的代码:
控制器:
def create_message
if params[:user].present? & params[:message].present? & params[:subject].present?
current_user.send_message(User.find(params[:user]), params[:message], params[:subject])
redirect_to inbox_path
end
end
这是我的观看代码:
<%= form_tag do %>
<%= select_tag 'user', options_from_collection_for_select(User.all, :id, :fullname) %><br/>
<%= text_field_tag 'subject' %><br/>
<%= text_area_tag 'message' %><br/>
<%= submit_tag 'Send' %>
<% end %>
上面的代码工作正常并且消息正在发送,但是,当我尝试像这样添加文件字段并尝试更改控制器代码时,附件没有上传:
def create_message
if params[:user].present? & params[:message].present? & params[:subject].present?
current_user.send_message(User.find(params[:user]), params[:message], params[:subject], true , params[:attachment])
redirect_to inbox_path
end
end
查看:
<%= form_tag do %>
<%= select_tag 'user', options_from_collection_for_select(User.all, :id, :fullname) %><br/>
<%= text_field_tag 'subject' %><br/>
<%= text_area_tag 'message' %><br/>
<%= file_field_tag 'attachment' %>
<%= submit_tag 'Send' %>
<% end %>
我认为这是一个强大的障碍问题。在Rails 3中我可以使用attr_accessible。但是,如何确保attachment
字段未被阻止和允许?
P.S - 我安装了carrierwave gem,我甚至多次重启了我的服务器。
感谢。
答案 0 :(得分:2)
我正在改变我以前的答案,因为事实上它并不正确。
基本上,如果您的问题与我的一样,可以通过添加以下内容轻松解决:multipart =&gt;忠于你的形式。至少在我的情况下,这就是为什么carrierwave没有拿起附件。
我尝试通过扩展邮箱Message类并设置和安装具有不同属性名称的全新carrierwave对象来解决问题。基本上,这使我可以避免使用邮箱中定义的附件属性并自定义附件。
但是对于邮箱message.rb Class的扩展,这非常麻烦。所以我最终放弃了那个课程。尽管如此,拥有自己的上传器而不是依赖邮箱附件非常方便,特别是如果您想要或需要将文件上传到不同的目录或云端。
最后,我为我的附件创建了一个新模型,并在其上安装了一个新的载波上传器。通过这种方式,我可以根据需要自定义它,而无需调整邮箱,这在文档或支持方面几乎没有。
可能这对你没用,但可能对别人有帮助!