0

我有一个带有名为 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 <%= form_for (@some_show), html: {class: "form-horizo​​ntal pull-left"} do |f| 的相关部分 %> ... <%= f.fields_for :business_hours |operating_time| %> <%= 渲染 :partial => 'shared/business_hours', :locals => {:f => operating_time} %> <% end %>

最后,这是控制器的编辑动作

# GET /some_shows/1/edit
def edit
  @some_show = SomeShow.find(params[:id])
end
4

1 回答 1

0

因此,对我有用的解决方案是将 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 部分我没有得到任何表单助手的方式。

于 2013-07-11T00:39:45.870 回答