0

私のウェブサイトには、認証されたユーザーだけが投稿できるブログがあります。まだ認証されていない既存のユーザーが「作成」をクリックしたときにコメントを入力している場合、認証のためにログインビューにリダイレクトされてから、記事ビューにリダイレクトされます。ユーザーがコメントを作成していたビューをレンダリングしてブログの機能を改善し、ユーザーがコメントを再度入力する必要がないようにします。

私はプログラミングとルビーにかなり慣れていないので、この問題にどのように取り組むべきかわかりません。どんな提案も歓迎します。前もって感謝します。

私のウェブサイトは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
4

1 に答える 1

1

クイックアプローチ\KIS

アプリ/ビュー/記事/_comment_form.html.erb

<% if confirm_logged_in  %> # helper method to detect if current is logged in

  <%= form_for [@article,@article.comments.new] do |f|%>
    <%= f.hidden_field :article_id%>

    <%= f.label :body %><br />
    <%= f.text_area :body, :cols => 50, :rows => 6 %><br />

    <%= f.submit%>
  <%end%>

<% else %>

  <%= link_to "Login to add a comment", login_path %>

<% end %>
于 2012-05-18T17:02:08.493 に答える