7

Best In placeでdisplay_withオプションを使用する方法についてのドキュメントは多くありませんが、Best_in_Placeに日付を要約形式(mm / dd / yyyy)で表示させようとしています。私のdb(sqlserver)には、日時形式で保存された日付があり、次のコマンドを使用してフィールドを表示します。

<%= best_in_place(@production, :budget_approval_internal,  type: :date, :nil => "[Not    set]")  %>

クリックすると、gemは期待どおりに機能し、カレンダーコントロールを設定して日付を選択し、それを短い形式で表示します。しかし、更新を押すと、次のような日付が表示されます。

 2013-12-04 00:00:00 UTC    

したがって、: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_dateが見つかりません。何かアイデアはありますか?

4

4 に答える 4

5

私は同じ問題に遭遇し、zubinによって行われたbest_in_placeのプルリクエストからの小さなスニペットを使用しました。

<%= in_place_edit(@term, :starts_on, display_with: lambda { |dt| ldt(dt) }, html_attrs: {datepicker: "true"}) %>

ここで、ldtは、日付オブジェクトを受け取り、私の希望の形式に変換するメソッドです。

それが役に立てば幸い

于 2013-01-15T14:39:51.240 に答える
0

コントローラに入れるかinclude ApplicationHelper、メソッドを適切なヘルパーファイルに追加する必要があります。
編集:ActionView :: Baseクラスを開き、メソッドを追加する必要があります

module ActionView  
    class Base  
        def format_date(rec)  
            rec.strftime('%m/%d/%Y')  
        end  
    end  
end  
于 2012-11-26T09:39:00.630 に答える
0

budget_approval_internalたぶん、本番モデルのセッターメソッドをオーバーライドできます。これは最善の解決策ではありませんが、このモデルでのみbest_in_placeを使用している場合は、問題ありません。

class Production
  def budget_approval_internal
    read_attribute(:budget_approval_internal).strftime("dd/mm/YY")
  end
end
于 2012-11-26T15:02:08.157 に答える
0

私自身も同様の問題に遭遇しました。あなたが持っているような単純なフォーマット方法の場合は、:display_asの代わりに使用する必要があります:display_with

ビューのb_i_pコードはを使用します:display_as => format_date

次に、format_dateメソッドをモデルに配置します。引数を削除し、メソッドを次のように書き直します。

def format_date
   self.my_date.strftime('%m/%d/%Y')
end

ApplicationHelperをいじる必要はありません。

于 2015-05-29T17:21:35.147 に答える