2012-04-01 1 views
0

私はレール初心者です。私の質問にはおそらく1行か2行で答えると確信しています。私は何が間違っているのか把握できません。助けてください!事前にお時間をいただきありがとうございます。 これは私の問題です: 私のコントローラメソッドrelease_reservationは、データベースに新しい値で属性を保存することができません。私の制限されたレールの知識で、私はそれがroutes.rbで何かを持っている疑いがありますが、私は実際の問題に絞り込むことができません。 ここreservations_controller.rb私のコントローラメソッドrelease_reservationは新しい値で属性を保存していません

def release_reservation 
@reservation = Reservation.find(params[:id]) 
@reservation.reserve_from = DateTime.now 
@reservation.reserve_to = DateTime.now 
@reservation.reserve_status = false 

respond_to do |format| 
if @reservation.update_attributes(params[:reservation]) 
    format.html {redirect_to release_reservation_reservation, :notice => 'Machine was successfully released' }# show.html.erb 
    format.json { render :json => @reservation } 
else 
    format.html { render :action => "show" } 
    format.json { render :json => @reservation.errors, :status => :unprocessable_entity } 
end 
end 
end 

で定義されているrelease_reservationをだここでここでビューファイルはここに私はrelease_reservation

<h1>Reservation</h1> 
<br>  
<p> 
<% if @reservation.reserve_to > DateTime.now %> 
This machine will be released in 
<% duration = @reservation.reserve_to - DateTime.now %> 
<%= distance_of_time_in_words(duration) %> 
<% end %> 
</p> 
<p> 
    <b>Machine name: </b> 
    <%= @reservation.machine_name %> 
</p>  
<p> 
    <b>Machine platform: </b> 
    <%= @reservation.machine_platform %> 
</p>  
<p> 
<% if @reservation.reserve_to > DateTime.now %> 
    <b>Reserved by: </b> 
    <%= @reservation.machine_reserver %> 
<% end %> 
</p>  
<p> 
<% if @reservation.reserve_to > DateTime.now %> 
    <b>Reserve from: </b> 
    <%= @reservation.reserve_from.to_formatted_s(:long) %> 
<% end %> 
</p>  
<p> 
<% if @reservation.reserve_to > DateTime.now %> 
    <b>Reserve to: </b> 
    <%= @reservation.reserve_to.to_formatted_s(:long) %> 
<% end %> 
</p>  
<div class="form-actions"> 
    <%= link_to 'Back', reservations_path, :class => 'btn' %> 
<% if @reservation.reserve_to > DateTime.now %> 
<%= link_to 'Release', {:controller => 'reservations', :action => 'release_reservation', :id => @reservation}, :confirm => "Are you sure?", :class => 'btn btn-danger' %> 
<% else %> 
<%= link_to 'Reserve', edit_reservation_path(@reservation), :class => 'btn btn-primary' %> 
<% end %> 

を呼びたい場所からのモデルReservation.rb

class Reservation < ActiveRecord::Base 

validates :machine_reserver, :presence => true, :length => { :maximum => 50 } 

validates :machine_name, :uniqueness => {:scope => :machine_platform} 

validate :check_reservation_end_date, :on => :update 
validate :check_reservation_from_date 

default_scope :order => 'updated_at DESC' 

def date_reset 
self.reserve_from = DateTime.now 
self.reserve_to = DateTime.now 
end 

def check_reservation_end_date 
    if self.reserve_to < self.reserve_from 
    errors.add(:reserve_to, "cannot be lesser than or equal to start date") 
    end 
end 

def check_reservation_from_date 
if self.reserve_from < DateTime.now 
    errors.add(:reserve_from, "cannot be lesser than current date & time") 
end 
end 
end 

routes.rb

Reserver::Application.routes.draw do 

    resources :reservations do 
    member do 
    get 'release_reservation' 
     end 
end 
    resources :machines 
    resources :reserves 
    resources :platforms 
    resources :users 
    root :to => 'reservations#index' 
end 

すくいルート

release_reservation_reservation GET /reservations/:id/release_reservation(.:format) reservations#release_reservation 
        reservations GET /reservations(.:format)       reservations#index 
           POST /reservations(.:format)       reservations#create 
       new_reservation GET /reservations/new(.:format)      reservations#new 
       edit_reservation GET /reservations/:id/edit(.:format)    reservations#edit 
        reservation GET /reservations/:id(.:format)      reservations#show 
           PUT /reservations/:id(.:format)      reservations#update 
           DELETE /reservations/:id(.:format)      reservations#destroy 
+0

を永続化からインスタンスを防ぐためだと思います"/ reservations/4/release_reservation" ' – Sudhakar

答えて

0

私はあなたの検証が、私はroutes.rbをしてrelease_reservationは '置く' 私はこのエラー 「Noルートマッチ[GET]を取得する設定しようとした

+0

ありがとうMik!それはうまくいった。あなたの時間を感謝します。 – Sudhakar

関連する問題