Ostatni problem w systemie rezerwacji - errors

Cześć,
Na początku chciałem podziękować wszystkim za pomoc w napisaniu tej aplikacji, a w szczególności:

  • gotarowi
  • sevosowi
  • hosiawiakowi
  • lis2owi
  • warszkowi
  • bkozalowi

Jak narazie wszystko działa, jedyny problem to przy rezerwacji miejsca, wprowadziłem validację: validates_uniqueness_of :user_id, :scope => :event_id, :message => "Tylko jedno miejsce"
http://ekorozwoj.heroku.com/events/1
Musicie sie zalogować: u2 i hasło: z
Przy klikaniu “Rezerwacja miejsca…” kiedy chcesz zarezerwowac miejsce drugi raz, wyświetla mi się error, chciałbym jednak, żeby nie było przekierowania do seats i jakoś wrzucić ten błąd w layout

Jeżeli możecie mi pomóc jeszcze raz w tej aplikacji będę wdzięczny i zajmę się grafiką a jutro strona wystartuje :slight_smile:

Pozdrawiam i jeszcze raz dziękuję.

[code=ruby]class SeatsController < ApplicationController

GET /seats

GET /seats.xml

def index
@seats = Seat.order(‘seats.position ASC’)
authorize! :manage, @seats
respond_to do |format|
format.html # index.html.erb
format.xml { render :xml => @seats }
end
end

GET /seats/1

GET /seats/1.xml

def show
@seat = Seat.find(params[:id])
authorize! :manage, @seat
respond_to do |format|
format.html # show.html.erb
format.xml { render :xml => @seat }
end
end

GET /seats/new

GET /seats/new.xml

def new
@seat = Seat.new

authorize! :manage, @seat
respond_to do |format|
  format.html # new.html.erb
  format.xml  { render :xml => @seat }
end

end

GET /seats/1/edit

def edit
@seat = Seat.find(params[:id])
authorize! :manage, @seat
end

POST /seats

POST /seats.xml

def create
@seat = Seat.new(params[:seat])

respond_to do |format|
  if @seat.save
    if @seat.event.id == 1
      # @seat.move_to_bottom
    else
    if @seat.event.previous.seats.where(:user_id => @seat.user_id).exists?
      @seat.insert_at(44 + @seat.id)
      # if @seat.event.id == 1
      # @seat.move_to_top
    else
      @seat.insert_at(@seat.id)
    end
    end
    format.html { redirect_to(@seat.event, :notice => 'Seat was successfully created.') }
    format.xml  { render :xml => @seat, :status => :created, :location => @seat }
  else
    format.html { render :action => "new" }
    format.xml  { render :xml => @seat.errors, :status => :unprocessable_entity }
  end
end

end

PUT /seats/1

PUT /seats/1.xml

def update
@seat = Seat.find(params[:id])

authorize! :manage, @seat


respond_to do |format|
  if @seat.update_attributes(params[:seat])
    format.html { redirect_to(@seat, :notice => 'Seat was successfully updated.') }
    format.xml  { head :ok }
  else
    format.html { render :action => "edit" }
    format.xml  { render :xml => @seat.errors, :status => :unprocessable_entity }
  end
end

end

DELETE /seats/1

DELETE /seats/1.xml

def destroy
@seat = Seat.find(params[:id])
@seat.destroy

respond_to do |format|
  format.html { redirect_to(seats_url) }
  format.xml  { head :ok }
end

end
end[/code]
Aha kod znajduje się tutaj -> https://github.com/regedarek/eko/tree/master/app/controllers

Robisz create, wiec jak w kontrolerze wywoływana jest akcja create masz tam warunek, jak walidacja się powiedzie (zapis) to idzie gdzieś jak nie to gdzie indziej. Jak chcesz zmienić miejsce gdzie ci idzie jak walidacja się nie uda to tam. Wyświetlić możesz jakiś komunikat poprzez flash[:error] np, ale tu masz z formularza błąd więc możesz go wyświetlić tak jak inne błędy z formularza zawsze. Nie wiem gdzie chcesz go przekierować, możliwe, że flash[:error] będzie lepszy.