ruby on Rails 自定义设置器帮助
抱歉我的英语,
我有一个名为 Recipe
的模型,Recipe 有一个名为 duration
的属性
在我的表单中,我有 2 个下拉列表来获取持续时间属性
select_tag 'duration[hours]'
select_tag 'duration[minutes]'
我需要持续时间的值像这种格式 hh:mm:ss
的属性
我已经尝试过
def duration=(d)
self.duration = "#{d[:hours]}:#{d[:minutes]}:00"
end
,但不起作用,
请帮忙
提供建议!
sorry for my english,
I have a model named Recipe
and Recipe has an attribute named duration
In my form, I have 2 dropdowns to get duration attribute
select_tag 'duration[hours]'
select_tag 'duration[minutes]'
I need the value of duration attribute like this format hh:mm:ss
I have tried with
def duration=(d)
self.duration = "#{d[:hours]}:#{d[:minutes]}:00"
end
but that is not working
help please
Thk in advice!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
在
您的方法中,您可以调用自己,因为它是相同的方法。您需要更改属性持续时间而不是方法
With
In your method you call yourself because it's the same method. You need change the attributes duration not the method
以下是您正在寻找的正确语法:
在视图中 (recipes/_form.html.erb...)
在模型中 (recipe.rb...)
为了完整性,覆盖 getter
您还可以使用:
但是NOT:
通过 self.name 将调用 getter 或 setter 函数(您试图覆盖它们)
Here is the correct syntax that you were looking for:
In the view (recipes/_form.html.erb...)
In the model (recipe.rb...)
For completeness, to override the getter
You can also use:
But NOT:
Going through self.name will call getter or setter functions (which you are attempting to override)
您的表单元素名为
小时
和分钟
,但您的模型正在寻找h
和m
键?这真的是你的意思吗?
Your form elements are named
hours
andminutes
but your model is looking forh
andm
keys?Is that really what you mean?
好的,我解决了这个问题,
我创建了一个与属性名称不同的 setter 方法,
以任何方式
设置我的属性。
Ok, I solved it
I created a setter method with a diferent name than attribute to set my attribute
thk any way
Regards.