Ruby on rails 未找到辅助对象的最佳就地显示
关于如何使用display_with选项in Best-in-place,没有太多文档,但我正在尝试让Best_-in-place以压缩格式(mm/dd/yyyy)显示日期。 My db(sqlserver)以datetime格式存储日期,我使用此命令显示字段:Ruby on rails 未找到辅助对象的最佳就地显示,ruby-on-rails,ruby-on-rails-3,ruby-on-rails-3.2,best-in-place,Ruby On Rails,Ruby On Rails 3,Ruby On Rails 3.2,Best In Place,关于如何使用display_with选项in Best-in-place,没有太多文档,但我正在尝试让Best_-in-place以压缩格式(mm/dd/yyyy)显示日期。 My db(sqlserver)以datetime格式存储日期,我使用此命令显示字段: <%= best_in_place(@production, :budget_approval_internal, type: :date, :nil => "[Not set]") %> 所以我想我可以使
<%= best_in_place(@production, :budget_approval_internal, type: :date, :nil => "[Not set]") %>
所以我想我可以使用:display_with选项来使用一个如下所示的助手:
def format_date(my_date)
my_date.strftime('%m/%d/%Y')
end
我将其放在application_helper.rb模块中,然后尝试了以下方法:
<%= best_in_place(@production, :budget_approval_internal, type: :date, :display_with => :format_date, :nil => "[Not set]") %>
:format\u date,:nil=>“[未设置]”)”%>
但我说的是一个错误:
“找不到帮助程序格式\u日期。有什么想法吗?您应该
在控制器中包含ApplicationHelper
,或者将该方法添加到相应的帮助程序文件中。编辑:您需要打开ActionView::基类并添加您的方法
module ActionView
class Base
def format_date(rec)
rec.strftime('%m/%d/%Y')
end
end
end
也许您可以覆盖生产模型的
预算批准\u内部
的setter方法。这不是最佳解决方案,但如果您仅在该模型中使用最佳位置,则该方法可以
class Production
def budget_approval_internal
read_attribute(:budget_approval_internal).strftime("dd/mm/YY")
end
end
我遇到了同样的问题,并使用了zubin完成的best_in_place的pull请求中的一个小片段
在这里,ldt是一种方法,它接受一个日期对象并将其转换为我想要的格式
希望它有帮助我自己也遇到了类似的问题。对于像您这样的简单格式化方法,您应该使用
:display_as
而不是:display_with
视图中的b_i_p代码将使用:display_as=>format_date
然后将format\u date
方法放入模型中。删除参数并按如下方式重写该方法:
def format_date
self.my_date.strftime('%m/%d/%Y')
end
无需与ApplicationHelper混为一谈。不,我相信ApplicationHelper会自动包含在所有控制器中,但无论如何它都没有帮助。有趣的是,如果我只是将其放入视图中,它工作正常。我不确定format\u date应该如何从中获取参数:display\u with,但我假设这是最好的方法的一部分_in_place magic。它似乎只接受来自ActionView模块的帮助程序。在lib/best_in_place/helper.rb中有一个复选框
ViewHelpers.response_to?(选择[:display_with])
。ViewHelpers是这样创建的:BestInPlace::ViewHelpers=ActionView::Base。新的
那么有没有办法将此函数以某种方式混合到ActionView模块中?好主意。尝试将其添加到ApplicationHelper模块之后:模块ActionView类Base def format\u date(rec)rec.strftime(“%m/%d/%Y”)end
我想到了这一点,但它并没有真正解决我为什么不能显示的问题:display_with to work。在我必须处理的模型中,我有大约30个日期字段,似乎有很多不必要的代码。
def format_date
self.my_date.strftime('%m/%d/%Y')
end