私のウェブサイトには、認証されたユーザーだけが投稿できるブログがあります。まだ認証されていない既存のユーザーが「作成」をクリックしたときにコメントを入力している場合、認証のためにログインビューにリダイレクトされてから、記事ビューにリダイレクトされます。ユーザーがコメントを作成していたビューをレンダリングしてブログの機能を改善し、ユーザーがコメントを再度入力する必要がないようにします。
私はプログラミングとルビーにかなり慣れていないので、この問題にどのように取り組むべきかわかりません。どんな提案も歓迎します。前もって感謝します。
私のウェブサイトはhttps://github.com/MariusLucianPop/mariuslp-で見つけることができます
以下は、コードの重要な部分だと私が思うものです。何か更新をご希望の場合はお知らせください。
コメント_controller.rb
before_filter :confirm_logged_in, :only => [:create]
def create
article_id = params[:comment].delete(:article_id)
@comment = Comment.new(params[:comment])
@comment.article_id = article_id
@comment.posted_by = session[:username]
@article = Article.find(article_id)
if @comment.save
redirect_to article_path(@article)
else
render "articles/show"
end
end
protected
def confirm_logged_in
unless session[:user_id]
flash[:notice]="Please login before posting a comment."
redirect_to login_path
return false
else
return true
end
end
Visitors_controller.rb
def login
#atempting to log in
authenticated_user = Visitor.authenticate(params[:username],params[:password])
if authenticated_user
session[:user_id]=authenticated_user.id
session[:username]=authenticated_user.username
flash[:notice] = "You are now logged in."
redirect_to articles_path
end
else
if !params[:username].blank? # only rendering the notice if the user tried to login at least once
flash[:notice] = "Invalid username/password combination. Please try again"
end
render "login"
end
end
ルート.rb
root :to => "static_pages#index"
get "static_pages/work_in_progress"
get "categories/new"
match "work" => "static_pages#work_in_progress"
match "login" => "visitors#login" # not rest
match "logout" =>"visitors#logout" # not rest
resources :articles do
resources :comments
end
resources :tags, :taggings, :visitors, :categories
match 'contact' => 'contact#new', :as => 'contact', :via => :get
match 'contact' => 'contact#create', :as => 'contact', :via => :post