我将我的Rails应用程序(-v3.2.13),以轨道4,我用继承的资源宝石的改写动作(创造!和更新!).我允许参数的整散,但它并没有创建/更新嵌套属性.我需要允许参数的整个哈希.当我尝试时,我收到以下错误.帮我解决这个问题.
PARAMS
{"foo"=>{"name"=>"1@1", "detail"=>"123", foo1_attributes"=>{"0"=>{"_destroy"=>"", "name"=>"John", "url"=>"johnsmith.blogspot.com",foo2_attributes"=>{"0"=>{"min_time"=>"0", "max_entry"=>"340"}}, "foo3_attributes"=>{"_destroy"=>"", "hours"=>"01", "minutes"=>"00"}, "status"=>"ACTIVE"}}, "foo4_attributes"=>{"0"=>{"image"=>"0","id"=>"1097"}}}, "commit"=>"Save", "foo_id"=>"13", "id"=>"1467"}
我的控制器
def update
update! do |success, failure|
success.html { redirect_to foo_path }
end
end
protected
def resource_params
params.permit!
end
Run Code Online (Sandbox Code Playgroud)
Foo模型
accepts_nested_attributes_for : foo1,foo2,foo3,foo4
has_many :foo1
has_many :foo2
has_many :foo3
has_many :foo4
Run Code Online (Sandbox Code Playgroud)
跟踪:
Completed 500 Internal Server Error in 3686ms
ArgumentError …Run Code Online (Sandbox Code Playgroud) 我正在尝试将图像从本地文件系统迁移到Dropbox,所以我使用carrierwave dropbox gem将所有图像移动到dropbox.我能够存储从我的应用程序上传的新图像.我试图移动现有的图像.
我正在使用Article.first.avatar?检查图像是否存在的方法,我已经在很多地方使用这种方法来处理我的应用程序中不同大小的图像.
当我使用上述方法来确定图像是否存在时,它总是在Dropbox中不存在图像时显示为true.看看我的控制台输出(2),
我的上传者:
class Avatar < CarrierWave::Uploader::Base
include CarrierWave::MiniMagick
storage: file
def store_dir
if model
"uploads/#{model.class.to_s.underscore}/#{model.id}/#{mounted_as}"
else
"uploads/#{mounted_as}/"
end
end
end
Run Code Online (Sandbox Code Playgroud)
控制台输出(1)
>Article.first.avatar?
>false
#<AvatarUploader:0x007f9813f1fe70
@file=
#<CarrierWave::SanitizedFile:0x007f9813f1e688
@content_type=nil,
@file="/Users/work/project/app1/public/uploads/370/avatar/avatar.png",
@original_filename=nil>,
@model=
##Article model
@mounted_as=:avatar,
@storage=#<CarrierWave::Storage::File:0x007f9813f1fad8 @uploader=#<AvatarUploader:0x007f9813f1fe70 ...>>,
@versions={}>
Run Code Online (Sandbox Code Playgroud)
我更改了上传器如下:
class Avatar < CarrierWave::Uploader::Base
include CarrierWave::MiniMagick
storage: dropbox
def store_dir
if model
"uploads/#{model.class.to_s.underscore}/#{model.id}/#{mounted_as}"
else
"uploads/#{mounted_as}/"
end
end
end
Run Code Online (Sandbox Code Playgroud)
控制台输出(2)
>Article.first.avatar?
>true
#<AvatarUploader:0x007f8574143ee8
@file=
#<CarrierWave::Storage::Dropbox::File:0x007f8574143308
@client=
#<DropboxClient:0x007f8574143420
@root="dropbox",
@session=
#<DropboxSession:0x007f8574143498
@access_token=#<OAuthToken:0x007f8574143470 @key="123453333", @secret="22222222222">,
@consumer_key="abcdeafs",
@consumer_secret="asdfasfj",
@locale=nil,
@request_token=nil>>,
@config=
{:app_key=>"asdfasfasf", …Run Code Online (Sandbox Code Playgroud) 我使用carrierwave gem上传图片.我在我的模型中使用attr_accessor:avatar.我不想创建数据库列.我可以将头像存储在特定目录中.但是当我更新某个其他字段时,我得到未定义的方法undefined methodavatar_changed?' 对于用户`.我错过了什么吗?帮我解决这个问题.这是我的用户模型
attr_accessor: avatar
mount_uploader: avatar, AvatarUploader
AvatarUploader < IconBase
DIEMENSIONS=[120,120]
def filename
"avatar.png"
end
end
Run Code Online (Sandbox Code Playgroud) 尝试使用capistrano进行部署时出现以下错误
上限生产部署
[whenever:update_crontab] rolling back
* executing "ls -x /home/appuser/app_assets_production/releases"
servers: ["10.1.171.106"]
[10.1.171.106] executing command
command finished in 3450ms
* executing "cd /home/appuser/app_assets_production/releases/20161103140152 && RAILS_ENV=production bundle exec whenever --update-crontab app_assets --set environment=production --roles db"
servers: ["10.1.171.106"]
[10.1.171.106] executing command
** [out :: 10.1.171.106] Using /home/appuser/.rvm/gems/ruby-2.1.2
** [out :: 10.1.171.106] [write] crontab file updated
command finished in 11877ms
*** [deploy:update_code] rolling back
* executing "rm -rf /home/appuser/app_assets_production/releases/20161104113421; true"
servers: ["10.1.171.106"]
[10.1.171.106] executing command
** [out :: 10.1.171.106] Using /home/appuser/.rvm/gems/ruby-2.1.2
command finished …Run Code Online (Sandbox Code Playgroud) 我想使用正则表达式来验证包含的字符串
[a-z0-9_.]我用它/^[\w\s\-.]*$/来验证字符串.但它允许第一个字符像(._)