我试图将refile挂钩到我的视图,我收到以下错误:
这是我的模特:
class Job < ActiveRecord::Base acts_as_paranoid acts_as_taggable acts_as_taggable_on :languages belongs_to :company belongs_to :category validates :title,:location,:category,:language_list,:short_description,:description,:application_process,presence: true end class Company < ActiveRecord::Base acts_as_paranoid has_many :jobs attachment :company_logo,type: :image validates :name,:url,:email,presence: true end
和simple_form视图(忽略binding.pry)
= render layout: 'header' do = simple_form_for(@job) do |j| div[class='panel-heading'] h3[class='panel-title'] |Position Details div[class='panel-body'] = j.input :title = j.input :location = j.association :category,as: :radio_buttons = j.input :language_list,as: :check_Boxes,collection: @tags = j.input :short_description = j.input :description,input_html: { class: 'textarea-height wysihtml5' } = j.input :application_process div[class='panel-heading'] h3[class='panel-title'] |Company Details div[class='panel-body'] = j.simple_fields_for :company do |jc| = jc.input :name = binding.pry = jc.input :company_logo,as: :attachment = jc.input :url = jc.input :email div[class='panel-heading panel-heading-info'] h3[class='panel-title'] |Would you like your job posting featured? div[class='panel-body'] p |Featured posted are promoted with additional design elements to grab the job seeker's attention. This additional marketing capability can be purchased for an additonal $#{AppConfig.product['settings']['job_base_featured_price']}. = j.input :is_featured = j.button :button,type: 'button',class: 'btn-primary' do = job_posting_button_step_label => i[class='fa fa-arrow-circle-right']
虽然我一直在解析文档,但我似乎无法弄清楚为什么attachment_field是未定义的.
require 'refile/rails' require 'refile/simple_form'
我想知道文档是否搞砸了或者simple_form部分是否被堵塞,因为如果我将其切换为:
= jc.input :company_logo,as: :file,direct: true,presigned: true
解决方法
经过漫长的战斗,我在这里找到了解决这种情况的方法.首先我发现这个SO
Styling file upload button for simple_form_for with Bootstrap in Rails 3后导致我尝试
https://github.com/jasny/bootstrap/.Jasny有一些甜蜜的文件上传者但是所有的宝石都已经过时了. [注意,我希望通过补丁来解决这个问题,因为我本周有时间]所以我将Jasny文件下载到供应商javascripts和stylesheets文件夹中,如下所示:
我还使用https://rails-assets.org/在我的gemfile中引入holder.js:
source 'https://rails-assets.org' do gem 'rails-assets-holderjs' end
接下来,我使用以下内容更新了我的application.js文件:
//= require refile //= require holderjs //= require jasny-bootstrap
接下来,我需要在我的sass设置中使用样式:
// External Libraries Built For Bootstrap in vendor @import 'awesome-bootstrap-checkBox'; @import 'jasny-bootstrap';
= j.simple_fields_for :company do |jc| = jc.input :name div label = t('simple_form.labels.company.logo') div[class="form-group fileinput fileinput-new" data-provides="fileinput"] div[class="fileinput-new thumbnail" style="width: 200px; height: 200px;"] img[data-src="holder.js/200x200" alt="..."] div[class="fileinput-preview fileinput-exists thumbnail" style="max-width: 200px; max-height: 200px;"] div span[class="btn btn-default btn-file"] span[class="fileinput-new"] |Select image span[class="fileinput-exists"] |Change = jc.input_field :logo,presigned: true a[href="#" class="btn btn-default fileinput-exists" data-dismiss="fileinput"] |Remove p[class="help-block"] = t('simple_form.hints.company.logo') = jc.input :url = jc.input :email
我想将此重构为部分,但我会等到我有另一个文件上传表单来解决这个问题.另外,如果您查看上面的代码,我遵循simple_form使用的语言环境约定.不漂亮,但它的工作原理.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。