3

ここから CalendarHelper を使用していますhttp://railscasts.com/episodes/213-calendars-revised

現在の月が表示され、次のように取得されます。

class XyController < ApplicationController
@date ||= Date.today

ビューにフォームが必要なので、この日付を任意のカスタム日付に設定できます。このようなもの:

  = simple_form_for(@date) do |f|
    = f.input ???

インスタンスオブジェクトのフォームを設定する方法の要点が欠けていると思います。コントローラーで設定したインスタンス変数の日付を設定するフォームを実装するにはどうすればよいですか?

編集。:

calendar_helper.rb

module CalendarHelper
  def calendar(date = Date.today, &block)
    Calendar.new(self, date, block).table
  end

  class Calendar < Struct.new(:view, :date, :callback)
    HEADER = %w[Hétfő Kedd Szerda Csütörtök Péntek Szombat Vasárnap]
    START_DAY = :monday

    delegate :content_tag, to: :view

    def table
      content_tag :table, class: "calendar" do
        header + week_rows
      end
    end

    def header
      ...
    end

    def week_rows
      ...
    end

    def day_cell(day)
      ...
    end

    def day_classes(day)
      ...
    end

    def weeks
      ...
    end
  end
end

ビューで:

  = calendar do |date|
     = date.day

したがって、ヘルパーには date = Date.today があります。これを @date インスタンスに変更し、単純な表示ビューに設定したいと思います。例:

profile_controller.rb

def show
  @date ||= Date.today
end

そして、次のようなビューで:

form_for(@date) do |f| f.date_select :日付

このようなものですが、これは明らかに機能しておらず、正しくもありません

4

5 に答える 5

1

これに似たものが機能すると思います

#view
= simple_form_for(@date) do |f|
  = f.input :date
于 2013-08-19T19:50:50.697 に答える
0
<%= f.date_select(:dob,:start_year => 1950) %>

これはあなたのために働くはずです。これは私が書いた.html.erb方法です。あなたのやり方で書くことができます。しかし、これが日付ピッカーを生成する方法です。

于 2013-08-14T13:11:27.563 に答える
0

form_for変数を使用すると、フォームをオブジェクトにバインドできます。つまり、フォームの各フィールドがオブジェクトのフィールドに対応します。

たとえば、ユーザー名と年齢フィールドを持つユーザー フィールドがあるとします。次のように実行できます。

コントローラ

@user = User.find(params[:id])

意見

<%= form_for(@user) do |f| %>
  <%= f.text_field :username %>
  <%= f.text_field :age %>
<% end %>

ユーザー名と年齢フィールドは、現在のユーザーの値に自動的に設定されます。

さて、あなたの場合。

(私はこちらの Railscast の古いカレンダーのエピソードに依存しています: http://railscasts.com/episodes/213-calendars )

フォームがアクティブなレコードに論理的にバインドされているcalendar_for場合、ヘルパーを使用しているかのようにヘルパーを使用できますform_for

したがって、オブジェクトがユーザーの場合:

calendar_for @user, :year => @date.year, :month => @date.month

form_tagそれ以外の場合は、オブジェクトがバインドされていない通常のヘルパーを使用し、そのcalendar_date_select_tagヘルパーを使用してカレンダーを挿入する必要があります。

このヘルパーの詳細については、ドキュメントを参照してください

フォローアップの質問はお気軽にどうぞ。

于 2013-08-18T09:03:13.147 に答える
0

私はこのアプローチを使用します:

- if @user.content_date
  %br/
  = f.text_field :content_date, id: 'datepicker', size: 10
  %br/

このIDを使用して選択します。

于 2013-08-18T15:10:04.910 に答える