gpt4 book ai didi

ruby-on-rails - 如何使用事件模型为 date_select 下拉菜单定义虚拟属性

转载 作者:行者123 更新时间:2023-12-01 23:15:15 24 4
gpt4 key购买 nike

我在我的应用程序中使用事件模型进行付款流程,但我无法添加信用卡到期日期字段,因为它会抛出如下错误未定义方法`card_expiration_date(3i)='

在我的模型中:

class CartServer

include ActiveModel::Validation

include ActiveModel::Conversion

extend ActiveModel::Naming

attr_accessor :card_expiration_date

查看中:

f.date_select(
:card_expiration_date,
:add_month_numbers => false,
:discard_day => true,
:start_year => (Date.today.year-10),
:end_year => (Date.today.year+10),
:order=>[ :month,:year]
)

最佳答案

像这样的东西将在 Rails 6 中工作:

class CartServer
include ActiveModel::Model
include ActiveModel::Attributes
include ActiveRecord::AttributeAssignment

attribute :card_expiration_date, :date
end

这里有两件事很重要:

  • 使用 :date 类型声明属性。在 ActiveRecord 模型中,此类型信息来自数据库架构,但由于我们使用 ActiveModel,因此需要显式声明它。

  • 包括 ActiveRecord::AttributeAssignment 以获取对多部分参数分配的支持。表单中的参数将如下所示:

    {
    "card_expiration_date(1i)" => "2020",
    "card_expiration_date(2i)" => "12",
    "card_expiration_date(3i)" => "31",
    }

    我们从 ActiveModel::Model 获得的 ActiveModel::AttributeAssignment 模块不知道如何将其转换为日期,因此我们需要引入更多信息而是功能齐全的 ActiveRecord 版本。

关于ruby-on-rails - 如何使用事件模型为 date_select 下拉菜单定义虚拟属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11947040/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com