我正在尝试在 Mailboxer Gem 中发送带有附件的消息。
我的堆栈是:Rails 4 和 Ruby 2.1.1
但是,我可以看到使用 CarrierWave 的附件已作为以下代码中的链接得到支持。
但是,我的设置完全是那样的。没有附件的普通消息正常。
这是我的代码:
Controller :
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
这是我的 View 代码:
<%= 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 %>
上面的代码工作正常并且消息正在发送,但是,当我尝试像这样向其中添加文件字段并尝试更改 Controller 代码时,附件没有上传:
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,我什至多次重启了我的服务器。
谢谢。
最佳答案
我正在更改我之前的答案,因为实际上它是不正确的。
基本上,如果您的问题和我的一样,可以通过在表单中添加 :multipart => true 轻松解决。至少在我的情况下,这就是载波没有接收附件的原因。
我试图通过扩展邮箱消息类并设置和安装一个具有不同属性名称的全新载波对象来解决该问题。基本上,这使我能够避免使用 mailboxer 中定义的附件属性并自定义附件。
但是对于邮箱 message.rb 类的扩展,这变得非常困惑。所以我最终放弃了那门类(class)。尽管如此,拥有自己的 uploader 而不是依赖邮箱附件仍然非常方便,尤其是当您想要或需要将文件上传到不同的目录或云端时。
最后,我为我的附件创建了一个新模型,并在其上安装了一个新的载波 uploader 。通过这种方式,我可以根据需要对其进行自定义,而无需调整邮箱程序,而邮箱程序在文档或支持方面几乎没有。
可能这对您不再有用,但可能对其他人有帮助!
关于ruby-on-rails - 文件上传 Mailboxer Gem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23767420/