que estoy tratando de conseguir mi cabeza alrededor de éste:Rieles: redirigir dos últimas páginas
Digamos que tiene dos modelos en los que:
: Barra de has_many: Foos
y tiene una url como este: http://myapp.com/24-name-of-the-bar-to-param/foos/new
En mi sitio, esta página muestra mucha información sobre la barra por la que los usuarios crearán un foo. Por lo tanto, incluso si un usuario no está conectado, el usuario aún podrá ver la información.
Actualmente, cuando el usuario inicia sesión, se encuentra un formulario para crear un nuevo foo en el lado izquierdo de la página web. Cuando el usuario no está conectado dice "Inicie sesión o regístrese"
El formulario explica mucho sobre cómo funciona mi aplicación, por lo que me gustaría cambiarla para que incluso si un usuario no está conectado se mostrará el formulario, y si hacen clic en enviar, los llevará al login_path y luego, cuando inicien sesión, volverán a la ruta donde enviaron el formulario.
estoy corriendo en este problema: Actualmente tengo un método login_required en mi controlador de aplicación como esta: acción requerida
def store_location
session[:return_to] = request.request_uri
end
def login_required
unless current_user || admin?
store_location
flash[:notice] = "Please log in"
redirect_to login_path and return false
end
end
Esta entrada se llama en la acción create del foo. Cuando hago clic en enviar en el formulario me lleva a http://myapp.com/foos en lugar de http://myapp.com/24-name-of-the-bar-to-param/foos/new
Supongo que esto se debe a que se llama a la función de inicio de sesión en la acción de creación y no en la acción nueva.
¿Alguna idea?
ACTUALIZACIÓN según la petición aquí está el código del controlador y devoluciones de llamada:
before_filter :find_bar, :except => [:index, :edit, :update]
before_filter :login_required, :only => [:create]
ssl_required :edit, :update
def new
@foo = Foo.new :amount => "0.00"
@foos = Foo.find(:all, :conditions => ["bar_id = ?", @bar.id], :order => "created_at DESC").paginate :page => params[:page], :per_page => 10
@foos_all = Foo.find(:all, :conditions => ["hatlink_id = ?", @hatlink.id], :order => "created_at DESC")
@current_user = current_user
@topfooers = User.bar_amount(@bar, nil)
@average_foo = @bar.foos.average('amount')
end
def create
@foo = @current_user.foos.build params[:foo]
if (@bar.foos << @foo)
flash[:notice] = "Thank you for fooing!"
redirect_to new_bar_foo_path(@bar)
else
render :action => :new
end
end
private
def find_bar
@bar_id = params[:bar_id]
return(redirect_to(categories_path)) unless @bar_id
@bar = Bar.find(@bar_id)
end
Estoy interesado en la historia de la problem.:-) –
Publique el código de acción create y before_filters u está usando –
¿Podríamos ver las acciones del controlador? – davidcelis