重新归档 simple_form 未定义的方法 attachment_field
refile simple_form undefined method attachment_field
我正在尝试将 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
未定义。
此外,我有一个初始化程序 refile.rb 设置如下:
require 'refile/rails'
require 'refile/simple_form'
我想知道文档是不是乱七八糟或者 simple_form 的文章很烂,因为如果我将其切换为:
= jc.input :company_logo, as: :file, direct: true, presigned: true
经过长时间的斗争,我找到了解决这种情况的方法。首先我找到了这个 SO post Styling file upload button for simple_form_for with Bootstrap in Rails 3 which lead me to try https://github.com/jasny/bootstrap/。 Jasny 有一些不错的文件上传器,但所有的宝石都已经过时了。 [注意,我希望这周有时间用补丁修复这个问题]所以我将 Jasny 文件下载到供应商的 javascripts 和样式表文件夹中,如下所示:
我还使用 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, direct: true, 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 使用的语言环境约定。不漂亮但它有效。
我正在尝试将 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
未定义。
此外,我有一个初始化程序 refile.rb 设置如下:
require 'refile/rails'
require 'refile/simple_form'
我想知道文档是不是乱七八糟或者 simple_form 的文章很烂,因为如果我将其切换为:
= jc.input :company_logo, as: :file, direct: true, presigned: true
经过长时间的斗争,我找到了解决这种情况的方法。首先我找到了这个 SO post Styling file upload button for simple_form_for with Bootstrap in Rails 3 which lead me to try https://github.com/jasny/bootstrap/。 Jasny 有一些不错的文件上传器,但所有的宝石都已经过时了。 [注意,我希望这周有时间用补丁修复这个问题]所以我将 Jasny 文件下载到供应商的 javascripts 和样式表文件夹中,如下所示:
我还使用 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, direct: true, 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 使用的语言环境约定。不漂亮但它有效。