[前][次][番号順一覧][スレッド一覧]

rails:1554

From: Kazuhiko <kazuhiko@f...>
Date: Thu, 24 Aug 2006 00:59:30 +0900
Subject: [rails:1554] Re: カレンダーの日付のリンク化

かずひこです。

At Thu, 24 Aug 2006 00:31:19 +0900,
Masaya Konta wrote:

> コンタと申します。
> よろしくお願いします。

こんにちは。こちらこそよろしくお願いします。

> ■やりたいこと
> 「はじめようRuby on Rails」のカレンダーの日付をクリックすると、newに遷移し、
> datetimeをクリックした日付のものにしたい。

それはいい感じですね。

> ■やってみたこと
> link_to date.mday.to_s  とすることで、日付部分をリンクとしたのですが
> どのように'new'にパラメータを渡したらよいかわかりません。
> schedules_controller.rbのdef newのところで
> @schedule = Schedule.new(datetime => 2006-08-08)
> とすれば固定の日付は表示されるのですが、
> やはりクリックした日付をここに反映したく。。

変更する部分は二つあります。

* 日付をクエリーに含めた new へのリンクを作る
* コントローラの new メソッドで、日付のクエリーがあればそれをセットする

ユーザまわりのない Step5 あたりでの差分で示すと、それぞれこんな感じでど
うでしょうか。

--- app/views/schedules/month.rhtml	(revision 698)
+++ app/views/schedules/month.rhtml	(working copy)
@@ -20,6 +20,8 @@
     cell_text << "<br />\n"
     cell_text << link_to(h(schedule.title), :action => 'show', :id => schedule)
   end
+  cell_text << "<br />\n"
+  cell_text << link_to('New', :action => 'new', :date => date)
   [cell_text, cell_attrs]
 end
 %>
--- app/controllers/schedules_controller.rb	(revision 698)
+++ app/controllers/schedules_controller.rb	(working copy)
@@ -16,6 +16,9 @@
 
   def new
     @schedule = Schedule.new
+    if params[:date]
+      @schedule.datetime = Time.parse(params[:date]) rescue nil
+    end
   end
 
   def create

上の差分で、New というリンクが /schedules/new?date=2006-01-02 みたいなリ
ンクになります。クエリーの設定のしかたは、少し上の edit へのリンクで :id
=> schedule としているのとほとんど同じですね。

そして下の差分で、その date= の中身を parse して @schedule.datetime にセッ
トするようになっています(parse に失敗したら nil にしてあります)。

以上、参考になれば幸いです。
-- 
かずひこ <http://www.fdiary.net/>
  「恋とハックはアジャイルが命!」

--
ML: rails@r...
使い方: http://QuickML.com/

[前][次][番号順一覧][スレッド一覧]

      1553 2006-08-23 17:31 [mkonta@g...         ] カレンダーの日付のリンク化              
->    1554 2006-08-23 17:59 ┗[kazuhiko@f...       ]                                       
      1562 2006-08-24 14:40  ┗[mkonta@g...         ]