Ruby on Rails,带有对象方法的表单助手
Posted
技术标签:
【中文标题】Ruby on Rails,带有对象方法的表单助手【英文标题】:Ruby on Rails, form helper with object method 【发布时间】:2013-07-10 14:30:36 【问题描述】:我有一个带有名为 date_string 的方法的模型。此方法的重点是在共享视图中使用时返回格式化的日期字符串。这是查看代码。
<div class="field control-group">
<div class="control-label">
<%= f.label :business_hour , :date_string %>
</div>
我希望 f.label 调用能够像 api doc 那样运行,其中 :business_hour 是对象,而 :date_string 是方法。但是,唯一呈现给视图的是字符串“日期字符串”或“日期字符串”。
非常感谢任何有关让视图类调用模型上的方法而不是属性的帮助。
营业时间代码
class BusinessHour < ActiveRecord::Base
attr_accessible :business_hourable_id,
:business_hourable_type,
:close_time, :day, :open_time,
:order , :business_date
belongs_to :business_hourable , :polymorphic => true
def date_string()
if business_date.nil?
return ''
else
return_string = business_date.strftime( '%a %b\ %e , %Y' )
end
end
结束
这里是完整的部分代码(shared/business_hours):
<div class="field control-group">
<div class="control-label funkiness">
<%= F.label :business_hour , :date_string %>
</div>
<div class="controls">
<%= f.select :open_time, available_hours, :include_blank => true %>
</div>
<div class="control-label">
<%= f.label :open_time, 'Close Time' %>
</div>
<div class="controls">
<%= f.select :close_time, available_hours, :include_blank => true %>
</div>
</div>
这是 _form 的相关部分 ... 'shared/business_hours', :locals => :f => operating_time %>
最后,这里是控制器的编辑动作
# GET /some_shows/1/edit
def edit
@some_show = SomeShow.find(params[:id])
end
【问题讨论】:
能否贴出整个视图和相关模型代码? @zeantsoi 请查看编辑和型号代码的问题。 我明白了。如果您还可以发布完整的视图代码以及您尝试调用的控制器操作,将会有所帮助。 @zeantsoi 好的,我已经添加了更多信息。 这有什么好运气吗? 【参考方案1】:所以对我有用的解决方案是从我的模型中取出 date_string,并在帮助程序中实现它。然后,我修改了部分视图,如下所示:
<div class='field control-group hour_dropdown_2'>
<div class='field control-group'>
<div class="control-label">
<label><%= get_business_hour_string(f) %></label>
</div>
<h4 class='no-break-h'>From</h4>
<%= select :open_time, available_hours, :include_blank => false %>
<h4 class='no-break-h'>To</h4>
<%= select :close_time, available_hours, :include_blank => false %>
</div>
</div>
我的选择标签仍然被破坏,我不知道为什么我的 _address 部分我得到一个 f.whatever,但对于 BusinessHour 部分我没有得到任何表单助手的方式。
【讨论】:
以上是关于Ruby on Rails,带有对象方法的表单助手的主要内容,如果未能解决你的问题,请参考以下文章
不允许用户在 ruby on rails 中提交带有空字段的表单
Ruby on Rails 表单添加带有文本框的“其他”选项以选择下拉菜单
如何在 Ruby on Rails 中使用带有 form.select 的 jquery .click() 方法?
Ruby on Rails 3 表单中的 _snowman 参数有啥用?
如何在 ruby on rails 中访问 rails 助手和嵌入资产 javascript 文件中的 ruby?