问题标签 [virtual-attribute]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
915 浏览

ruby-on-rails - Rails 验证虚拟属性,设置表单错误。Railscast #32

我基本上是在尝试实施 Railscast #32 中的解决方案,针对 Rails 3.0.7 进行了现代化改造

http://railscasts.com/episodes/32-time-in-text-field

当通过控制台或(预期的)表单条目将字符串(例如“foobar”)放入#deadline_string = 时,我想设置验证错误。

我特别关心的是更严格的时间格式,Chronic.parse('2011-05-25 08:19:00 UTC')这会引发 TypeError。在这种情况下,我想回退到 Time.parse,它可以理解这种格式。

这种替代形式也不能deadline_string="foobar"作为初始调用使用。

无论我尝试什么,似乎都无法进行第二次救援。最后期限属性也有一些奇怪之处,它在模式中指定为日期时间。

最终的解决方案是这样的,但它可能需要进行一些重构。我很担心设置self.deadline方法调用,但不知道为什么我应该这样做。

欢迎重构,并将被标记为答案。

0 投票
1 回答
190 浏览

ruby-on-rails-3 - Rails 3 - 处理文本输入以创建多个模型

在我正在开发的应用程序中,Courses有很多Problems,而这些又有很多Steps。现在有一个表格可以将问题添加到课程中(然后可以将步骤添加到这些问题中)。我们想要的是有一个只有一个 LaTeX 输入字段的表单,然后处理 TeX 以在他们的步骤中创建多个问题。

目前,我们在Problems控制器中完成这一切。我们有两种方法,texnew与 new 相同,只是它有一个不同的视图来重定向到另一个新方法:texcreate,它使用辅助方法来提取问题和步骤(使用一系列正则表达式),尝试创建它们,如果出现问题,会闪烁一些信息性错误消息。

问题是,我一直在读到我们真的不应该在控制器中做很多事情,我们应该更喜欢在模型中做事情。虚拟属性可能是接收文本字段并处理它以创建单个问题的正确想法,但我无法弄清楚如何使其适用于多个问题,或者如果出现问题如何生成任何类型的错误消息沿途某处出错。

有没有更好/更惯用的方法来做到这一点?

0 投票
3 回答
11492 浏览

ruby-on-rails - Rails 3:使用 :if 语句创建验证

您好我正在尝试设置一个仅在特定表单视图中调用的验证,为此我正在尝试为表单上的虚拟属性创建一个 hidden_​​field 并将其设置为一个值,然后验证:如果虚拟属性等于值。

到目前为止,我有:

0 投票
1 回答
473 浏览

ruby-on-rails - Rails 3:Railscast #167 用于创建标签的虚拟属性 - @user.tags

我想要一个标签系统,我可以通过创建标签的用户来分隔标签。我遵循 Railscast #167 关于使用虚拟属性设置标签的方法,但这种方式只能让我调用 @post.tags 来查找帖子的标签,但我不能调用 @user.tags 并找到它们的所有标签。

我怎样才能增强它,以便 @user.posts.tag("music") 返回他们所有带有标签音乐的帖子?

感谢您提供帮助或洞察我做错了什么。

0 投票
3 回答
644 浏览

ruby-on-rails - 何时在 Rails 3 中使用虚拟属性或在哈希中传递数据

在我的应用程序中,我有一个Widget模型,一个Feature具有has_many 通过表关联的模型WidgetFeature

根据要求,当我发送一个 WidgetFeature 对象时,我也应该将 feature_name 附加到它,用于关联的给定功能。
有两种方法:

  1. 发送对象时,请执行以下操作:

然后我可以在我的控制器或视图中访问它,widget_feature_object[:feature_name]因为一个对象有(键,值)对,所以我也可以添加另一个。

2. 在模型中创建feature_name一个虚拟属性WidgetFeature然后为其创建getter 和 setter 方法

据我所知,当您想要创建与模型中实际存在的字段不同的视图时,您应该使用虚拟属性(例如,全名 = 名字 + 姓氏)。
同样的东西也适合这里吗?

另外,Rails 是否对对象进行了一些缓存,当您使用虚拟属性而不是当我使用第一种方法时,这可能会派上用场?

每种方法的优缺点是什么?根据我的要求,哪种方法最适合?非常感谢。

0 投票
2 回答
200 浏览

ruby-on-rails - 在虚拟属性中写入嵌套模型的正确 Ruby on Rails 语法是什么?

试图分而治之这些问题(1、2 我仍然有。我想在我的嵌套多对多模型中从虚拟属性编写 BLT 配方的第一步。后来我想要一个更复杂的形式,因此我在模型中这样做。

除了配方名称外,我已经对模型中的所有内容进行了硬编码。这是配方模型:

这是表格

我收到“RecipesController#create 中的 NameError,未定义的局部变量或方法 `attribute' for #”。我想我有不止一个错误,但这似乎对我有用。我究竟做错了什么?

谢谢!

编辑 - 这是 RecipeController 创建操作

0 投票
2 回答
287 浏览

ruby-on-rails - 如何在 Ruby on Rails 中解析文本字段,然后将其写入多个模型?

我在 Rails 3.1.RC4 中创建了简单的项目+任务应用程序。它将具有项目名称、任务,并且每个任务都将分配给一个人。项目表格很简单,只有两个框 (1) 任务名称和 (2) 任务和受让人。在后端,我想解析任务和受让人,并将它们全部放入正确的模型中。

样本输入

项目名称: Pip的生日派对

任务,受让人:

  • 干净的浴室,约翰
  • 擦鞋,莎莉
  • 烤蛋糕,彼得
  • 买香槟,苏珊

它有四种型号:

这是一种形式的部分:

现在我收到“人”的未定义方法错误。

我已经回顾了涵盖多对多模型、虚拟属性和嵌套模型的 Railscast,但我还没有实现飞跃。我必须在没有 Javascript 的情况下完成这项任务。

0 投票
1 回答
186 浏览

ruby-on-rails - 在 Rails 中设置模型关联 - 保存“从孙子侧”

我是 Ruby 新手,所以如果其中一些完全无知,请原谅。我想设置以下关联:

  • 转录属于作文
  • 作曲有许多转录,属于艺术家
  • 艺术家有许多作品(以及通过作品进行的转录)

我不想有任何独立的形式来创作作品和艺术家。用户只需创建转录 - 转录表单具有艺术家和作品的文本字段,并且应该动态创建数据库条目(如果它们尚不存在)。

我应该如何设置模型?我应该在转录中使用一些虚拟属性吗?

然后find_or_create_by_name使用我之前找到或创建的艺术家创建构图?

任何帮助表示赞赏!提前致谢

0 投票
1 回答
589 浏览

ruby-on-rails - Ruby on Rails - Searching virtual attributes (tags)

I've set up a Virtual Attribute tagging system as shown by Ryan Bates here: http://railscasts.com/episodes/167-more-on-virtual-attributes

The system works really well for applying tags to my models and is something I implemented into my system a couple of days ago. I then went in and followed the simple search tutorial by Ryan Bates here: http://railscasts.com/episodes/37-simple-search-form. My issue is that now my search form searches though names and I just happen to have implemented tags - it only makes sense for me to also be searching the tags. Unfortunately I'm not extremely experienced in Ruby on Rails and the only way I could even get it to kind of work was to do a bunch of loops that looped around everything and even then I couldn't figure out how to search the array I'd got (and the loops made everything very sluggish).

Does anyone know how I could do something like this?

0 投票
1 回答
966 浏览

ruby-on-rails - Accepts_nested_attributes_for 虚拟属性

我有 2 个模型:

发票项目的列是加密的,我使用来自会话的加密密钥。我不希望将此密钥存储在服务器或任何其他模型中。

从控制器:

这会将密钥放入属性列表中,但在创建发票时不会将其传递给 InvoiceItems 模型......

任何有关如何使其工作的指示都会很棒。