2

私はイベントモデルを持っています。私はPastevents、今後のイベントとcurrenteventsとして3つのリンクがあります。同じアクションから同じビューに異なるリンク上の異なるデータを渡す方法はありますか?

これらの3つのリンクは、events_url(つまり、インデックスアクション)にルーティングされ、インデックスビューにデノードされます。


後、私はPasteventリンク上で過去のデータ、@ Currenteventsリンクのインデックスビューに@Today変数データを渡したい

def index 

     @today = Event.find (:all, :conditions => ['(start_date = current_date)'], :order => 'start_date ') 

     @past = Event.find (:all, :conditions => ['start_date < ?', current_date], :order => 'start_date') 

     @events = Event.find(:all, :conditions => ['start_date > ?', current_date], :order => 'start_date') 

end 

...イベントコントローラのindexアクションのコードで、@ upcomingeventリンクのイベントデータ。しかし、私はそれぞれのリンクで異なる変数を渡すことができません。私はどのようにdisを達成することができますか?続き


インデックスビューのコードです:

- content_for :title do 
    Listing Events 
- content_for :div do 
    Listing Events 
- content_for :brand_img do 
    %img{:src => "images/lifestyle.gif", :height => "35"} 
- @events.each do |event| 
    %ol.hoverbox 
    %li.increase 
     = link_to image_tag(event.photo.url), event_path(event) 
     .abc 
     = event.name 
     %br/ 
     .bca 
     = event.start_date 
     | 
     = event.start_time 
     /| 
     /= link_to " ".html_safe, event_path(event), :method => :delete, :class => "del-16", :confirm=>"Are u sure?", :title => "Delete", :style => "text-decoration:none;" 

DISビューで、私は、TI @events変数の示す予定されているイベントだけ...どのように私は別の上DIS変数を変更することができます参照していますので、リンク...

答えて

4

これを行うには、クエリパラメータを使用できます。

<%= link_to "Past events", events_path(view: "past") %> 
<%= link_to "Today's events", events_path(view: "today") %> 
<%= link_to "All events", events_path %> 
:あなただけのようなのlink_toメソッドに追加の引数を渡します

次に、あなたのコントローラであなたのような何かを行うことができます:

def index 
    case params[:view] 
    when 'past' 
    @past = Event.find (:all, :conditions => ['start_date < ?', current_date], :order => 'start_date') 
    when 'today' 
    @today = Event.find (:all, :conditions => ['(start_date = current_date)'], :order => 'start_date ') 
    else 
    @events = Event.find(:all, :conditions => ['start_date > ?', current_date], :order => 'start_date') 
    end 
end 

をしかし、あなたはまた、あなたのコントローラで対応するRESTfulなアクションを追加することによって、RESTfulなアプローチを次のよう考慮する必要があります。

のconfig/routes.rbをして:

01:

resources :events do 
    collection do 
    get 'past' 
    get 'today' 
    end 
end 

は、あなたのコントローラであなたは、別のアクションを定義する必要があると思いますあなたの意見では、その後

<%= link_to "Today's events", todays_event_path %> 
<%= link_to "Past events", past_event_path %> 
<%= link_to "All events", event_path %> 

どのようなアプローチあなたが選ぶ、あなたが最初にこのガイドをお読みください:ところでhttp://guides.rubyonrails.org/routing.html

を、あなたもあなたのモデルではなく、照会という名前のスコープを使用することを検討すべきですそのコントローラ(あなたが薄い彼を保つことができます)に:http://guides.rubyonrails.org/active_record_querying.html#scopes

これは、ここで私の最初の答えですので、私は、私は助けになる可能性がしたい:)

+0

Agisありがとうございました..... link_to "過去の出来事"、events_path、 "?view = past" ..これはエラーを出していたので、私はこの行を= link_to "過去の出来事"に変更しました、events_path(:view => "過去")... nその働くnw .. – NJF

+0

もちろん、それはエラーを与えた、私は誤ってパスを追加しました。私は最初の答えを編集しました。 – Agis