小编awe*_*khh的帖子

如何在表单中显示Rails ActiveRecord模型的序列化数组属性?

我们在Rails中使用ActiveRecord的"序列化"功能,如下所示:

class User < ActiveRecord::Base
    serialize :favorite_colors, Array
    ....
end
Run Code Online (Sandbox Code Playgroud)

所以我们可以拥有

u = User.last
u.favorite_colors = [ 'blue', 'red', 'grey' ]
u.save!
Run Code Online (Sandbox Code Playgroud)

因此,基本上ActiveRecord将上面的数组序列化并将其存储在一个名为favorite_colors的数据库字段中.

我的问题是:如何让用户在表单中输入他喜欢的颜色?你使用一系列文本字段吗?一旦他们进入,你如何在表格中显示他们编辑?

这是与序列化数组属性的Rails表单助手相关的问题.

谢谢

forms ruby-on-rails

10
推荐指数
1
解决办法
7625
查看次数

Carrierwave NoMethodError:nil的未定义方法`name':NilClass:

这里已经存在类似的问题Rails + CarrierWave:NoMethodError:nil的未定义方法`name':NilClass但解决方案是修复错字.

我已经在同一个项目中使用Rails和Carrierwave,没有任何问题.有一个简单的AR模型:

class Upload < ActiveRecord::Base
  attr_accessible :title, :data_file, :caption
  mount_uploader :upload, DataFileUploader

  validates :title, :data_file, :presence => true
end
Run Code Online (Sandbox Code Playgroud)

在控制器中,它们像往常一样:

def create
  @upload = Upload.new(params[:upload])

  if @upload.save
    redirect_to new_admin_upload_path, :notice => t("site.successfully_created_resource")
  else
    render :action => 'new'
  end
end
Run Code Online (Sandbox Code Playgroud)

直接前进.提交表单时发生以下错误:

ActiveRecord::StatementInvalid in Admin::UploadsController#create

NoMethodError: undefined method `name' for nil:NilClass: INSERT INTO "uploads" ("caption",    
"created_at", "data_file", "title", "updated_at") VALUES (?, ?, ?, ?, ?)
Run Code Online (Sandbox Code Playgroud)

我没有看到错误并且不明白,名称来自何处.当离开mount_uploader:upload,在AR模型中的DataFileUploader时,一切正常.

这有什么不对?

非常感谢!

ruby-on-rails carrierwave

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

如何在 Ruby 中对第一个元素是字符串的数组进行排序

问题是如何对具有以下结构的数组进行排序:

\n\n
status = \n [["Wartend", :pending],\n  ["Schufa Check", :schufa_check],\n  ["Schufa Key existiert", :schufa_person_key_exists],\n  ["LottoIdent", :lotto_ident],\n  ["IBAN existiert", :iban_exists],\n  ["E-Mail Best\xc3\xa4tigung", :email_validation],\n  ["SMS Best\xc3\xa4tigung", :mobile_validation],\n  ["Aktiv", :active],\n  ["gesperrt", :locked],\n  ["ausgeschlossen", :locked_out],\n  ["werden gel\xc3\xb6scht", :marked_for_deletion]]\n
Run Code Online (Sandbox Code Playgroud)\n\n

结果应该是这样的:

\n\n
[["Aktiv", :active], \n ["ausgeschlossen", :locked_out], \n ["E-Mail Best\xc3\xa4tigung", :email_validation], \n ["gesperrt", :locked], \n ["IBAN existiert", :iban_exists], \n ["LottoIdent", :lotto_ident], \n ["Schufa Check", :schufa_check], \n ["Schufa Key existiert", :schufa_person_key_exists], \n ["SMS Best\xc3\xa4tigung", :mobile_validation], \n ["Wartend", :pending], \n ["werden gel\xc3\xb6scht", :marked_for_deletion]]\n
Run Code Online (Sandbox Code Playgroud)\n

ruby arrays sorting

0
推荐指数
1
解决办法
1109
查看次数

标签 统计

ruby-on-rails ×2

arrays ×1

carrierwave ×1

forms ×1

ruby ×1

sorting ×1