小编Man*_*ano的帖子

Rails 4允许嵌套属性不创建/更新

我将我的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)

ruby-on-rails ruby-on-rails-4

11
推荐指数
3
解决办法
1万
查看次数

Carrierwave - 如果图像未上传,则保存为零

我正在尝试将图像从本地文件系统迁移到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)

ruby ruby-on-rails carrierwave

8
推荐指数
1
解决办法
1108
查看次数

Carrierwave未定义方法`avatar_changed?' 对于用户

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

ruby-on-rails-3 carrierwave ruby-on-rails-3.2

7
推荐指数
1
解决办法
3432
查看次数

使用capistrano部署时出现Psych Syntax错误

尝试使用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)

capistrano rubygems ruby-on-rails-3

6
推荐指数
1
解决办法
92
查看次数

正则表达式用\n替换<br>和<br/>

我想用(换行符)替换<br><br/>标记/n.

正则表达式的模式是什么?

ruby regex

2
推荐指数
1
解决办法
958
查看次数

正则表达式验证字符串只有小写,第一个字符必须是一个字母

我想使用正则表达式来验证包含的字符串

  • 必须只包含小写字母
  • 第一个字母必须是一封信.
  • 其余字符必须与正则表达式匹配 [a-z0-9_.]

我用它/^[\w\s\-.]*$/来验证字符串.但它允许第一个字符像(._)

ruby regex string

2
推荐指数
1
解决办法
2199
查看次数