首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我的控制器方法release_reservation没有用新值保存属性

我的控制器方法release_reservation没有用新值保存属性
EN

Stack Overflow用户
提问于 2012-04-01 15:22:37
回答 1查看 112关注 0票数 0

我是rails新手。我相信我的问题可能会用一两句话来回答。我就是想不出哪里不对劲。请帮帮我!提前感谢您的宝贵时间。这就是我的问题:我的控制器方法release_reservation不能将具有新值的属性保存到数据库中。以我有限的rails知识,我怀疑这与routes.rb有关,但我无法缩小到实际问题的范围。下面是在reservations_controller.rb中定义的release_reservation

代码语言:javascript
复制
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

这是Reservation.rb模型

代码语言:javascript
复制
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

下面是我想从其中调用release_reservation的视图文件

代码语言:javascript
复制
<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 %> 

这是routes.rb

代码语言:javascript
复制
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

瑞克路由

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

发布于 2012-04-01 16:55:02

我认为您的验证阻止了实例持久化

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9962648

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档