0

ユーザーに名前とメールアドレスを入力してもらいたいフォームがあります。これらはセッションに保存されます。その後、チャットボックスにテキストを投稿できます。

私の見解では、最初のセッションを作成するには:

<%= simple_form_for(@comments, :url => guest_login_order_path(@order)) do |f| %>
        <input name="comment[new_user_comment_name]" />
        <input name="comment[new_user_comment_email]" />
        <%= f.button :submit, :value => 'Guest Signin', :class => '' %>
    <% end %>

これは私のコントローラーに行きます:

def guest_login
    @order = Order.where(:public_hash => params[:public_hash]).first
    session[:new_user_account] = params[:new_user]

    respond_to do |format|
      if session[:new_user_account]
        format.html { redirect_to @order, notice: 'Your account has been created.' }
        format.json { render json: @order, status: :created, location: @order }
      else
        format.html { render action: "invoice" }
        format.json { render json: @order.errors, status: :unprocessable_entity }
      end
    end
  end

パラメータは正しく渡されますが、Cookieが作成されているかどうかはよくわかりません。名前を指定して、作成されたかどうかを確認する方法はありますか?また、ビューでは、セッションが存在するかどうかを確認するための条件がありますか?

4

1 に答える 1

1

Railsはセッションを作成するので、セッションが存在するかどうかを確認する必要はありません。セッションからユーザーを簡単に取得したい場合は、アプリケーションコントローラーでヘルパーメソッドを作成できます。

class ApplicationController < ActionController::Base
    def current_user
        @current_user ||= session[:new_user_account]
    end

    helper_method :current_user
end

このメソッドは、アプリ内の他のコントローラーとビューで使用できます。

于 2012-11-03T17:31:52.917 に答える