Zainstalowalem i skonfigurowałem (mam na myśli wygenerowanie “modelu devise”) devise-a. Po odwiedzeniu akcji new w kontrolerze post wyswietla mi sie formularz gdzie moge dodac wpis, jednak przy probie jego dodania zostaje przekierowany na index kontrolera post - tak jak było to przed zainstalowaniem wspomnianego gema, jednak z tą różnicą, że wpis nie zostaje dodany. Tak jak gdyby nie wykonywala się metoda create. Prosił bym o pomoc, sugestię jak mogę zdebugować problem.
Pokaż kod kontrolera. Zgodnie z konwencją, jeśli metoda create by została wywołana, ale nie zapisałaby rekordu, wyświetliłby Ci się z powrotem formularz.
[code]class PostsController < ApplicationController
#before_filter :authenticate_admin!
def new
@post = Post.new
end
def create
@post = Post.new(params[:post])
if @post.save
redirect_to new_posts_path, :notice => "Wpis zostal dodany prawidlowo"
else
render "new"
end
end
end[/code]
Wyciąłem z kodu akcję index i show
A nie masz czasem w ApplicationController jakiegoś before_filter, który mógłby robić przekierowanie? Mógłbyś też wrzucić odpowiedni kawałek logów.
W ApplicationController nie mam żadnego before_filter.
Natomiast w logach serwera dostaje cos takiego:
Processing by PostsController#index as HTML
Parameters: {“utf8”=>“✓”, “authenticity_token”=>“27J/B8keGlxxQlJBFXOlAd3C6i8kSMcZQ4sht/gpWnY=”, “post”=>{“title”=>“t”, “content”=>“t”}, “commit”=>“Dodaj”}
Post Load (0.2ms) SELECT “posts”.* FROM “posts”
Rendered posts/index.html.erb within layouts/application (71.3ms)
Completed 200 OK in 526ms (Views: 384.4ms | ActiveRecord: 6.5ms)
Wygląda tak jak by wykonywał akcję index (select na bazie), zamiast create. Mimo, że żądanie jest wysłane przy pomocy POST, a nie GET
http://guides.rubyonrails.org/getting_started.html#creating-new-posts
Poczytaj trochę, miałem podobny problem kiedyś
Już to czytałem. Nie wydaje mi się by tam były informacje, które pomogą mi w rozwiązaniu mojego problemu.
Pokaż wobec tego swoje routes.rb.
devise_for :admins
get “slcategories/show”
root :to => “home#index”
match “/posts” => “posts#index”
match “/posts/:title” => “posts#show”
match “/admins/posts/new” => “posts#new”
resources :posts
dodatkowo załączam kawałek rake routes:
GET /posts(.:format) posts#index
POST /posts(.:format) posts#create
Usuń match “/posts” => “posts#index” i spróbuj jeszcze raz.
Działa - dzięki. Choć pojawiły się nowe problemy, ale myślę, że z nimi sobie poradzę.