加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 重新生成simple_form undefined方法attachment

发布时间:2020-12-17 02:08:54 所属栏目:百科 来源:网络整理
导读:我试图将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,:langu
我试图将refile挂钩到我的视图,我收到以下错误:

enter image description here

这是我的模特:

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是未定义的.

另外,我有一个初始化程序refile.rb设置如下:

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文件夹中,如下所示:

enter image description here

我还使用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

这导致了一个漂亮的上传者!

enter image description here

我想将此重构为部分,但我会等到我有另一个文件上传表单来解决这个问题.另外,如果您查看上面的代码,我遵循simple_form使用的语言环境约定.不漂亮,但它的工作原理.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读