5

Best In placeでdisplay_withオプションを使用する方法については、たくさんのドキュメントはありませんが、Best_in_Placeに日付を凝縮した形式(mm/dd/yyyy)で表示させようとしています。 マイデシベル(のSQLServer)が日時形式で保存された日付を持っている、と私は、フィールドを表示するには、このコマンドを使用します。Best_in_place display_with helperを見つけられない

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

クリックすると、予想通りの宝石が日付を選択するために、カレンダーコントロールを入れて、働き、短い形式で表示します。私はこれを入れて

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

:使用にこのように見えるヘルパーを持っているdisplay_withオプション:

2013-12-04 00:00:00 UTC  

は、だから私は、私が使用して考えていた:私はリフレッシュを押すと、しかし、私は次のようになります日付を取得しますapplication_helper.rbモジュールにして、この試みた:

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

を私は言っでエラーが表示されます。

"ヘルパーformat_dateを見つけることができません。何か案は?

答えて

0

コントローラーにinclude ApplicationHelperを追加するか、該当するヘルパーファイルにメソッドを追加する必要があります。
編集:あなたはActionView ::基本クラスを開き、たぶん、あなたがあなたの生産モデルのbudget_approval_internalのためのセッターメソッドをオーバーライドすることができ、あなたの方法

module ActionView 
    class Base 
     def format_date(rec) 
      rec.strftime('%m/%d/%Y') 
     end 
    end 
end 
+0

いいえ、私はApplicationHelperがすべてのコントローラに自動的に含まれていると思いますが、いずれにしても役立たなかったと思います。興味深いことに、私がビューに<%= format_date(@ production.budget_approval_internal)%>を置くだけでうまくいきます。format_dateがdisplay_withからパラメータを取得する方法はわかりませんが、それはbest_in_placeの魔法の一部であると仮定しています。 – user1023110

+0

ActionViewモジュールからのヘルパーのみを受け付けるようです。 lib/best_in_place/helper.rbに 'ViewHelpers.respond_to?(opts [:display_with])'チェックがあります。そして、ViewHelpersは次のように作成されます: 'BestInPlace :: ViewHelpers = ActionView :: Base.new' – Sebi

+0

この関数を何らかの形でActionViewモジュールに組み込む方法はありますか? – user1023110

0

を追加する必要があります。これは最善の解決策ではありませんが、このモデルでbest_in_placeを使用している場合はそれだけです。

class Production 
    def budget_approval_internal 
    read_attribute(:budget_approval_internal).strftime("dd/mm/YY") 
    end 
end 
+0

私はそれについて考えましたが、なぜ私ができないのかという問題を実際には解決しません:display_with to work。私は対処しなければならないモデルに約30の日付フィールドを持っています。それは多くの不必要なコードのようです。 – user1023110

3

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

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

ここLDTは、日付オブジェクトを受け取り、私の欲望のフォーマットに変換する方法です。

希望します。

+1

あなたは天才です –

0

私はちょうど同様の問題に直面しました。あなたのような簡単な書式設定方法の場合は、:display_withの代わりに:display_asを使用してください。

ビュー内のb_i_pコードには、:display_as => format_dateが使用されます。

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

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

ApplicationHelperを使用する必要はありません。