Ruby on Rails,使用对象方法形成帮助器

时间:2013-07-10 14:30:37

标签: ruby-on-rails ruby-on-rails-3 erb formhelper

我有一个名为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是方法。但是,对视图呈现的唯一内容是字符串&#39;日期字符串&#39;或者&#39; date_string&#39;。

非常感谢任何有关获取视图类以在模型上调用方法而非属性的帮助。

Business_Hour代码

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的相关部分     &lt;%= form_for(@some_show),html:{class:&#34; form-horizo​​ntal pull-left&#34;} do | f | %GT;     ...            &lt;%= f.fields_for:business_hours do | operating_time | %GT;           &lt;%= render:partial =&gt; &#39;共享/ business_hours&#39 ;,               :locals =&gt; {:f =&gt; operating_time}%&gt;       &lt;%end%&gt;     

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

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

1 个答案:

答案 0 :(得分: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部分我没有得到任何形式助手的方式。