能够在会话中存储名称/电子邮件

时间:2012-11-03 17:06:03

标签: ruby-on-rails-3 session

我有一个表单,我希望用户将其名称和电子邮件放入会话中。然后他们可以在聊天框中发布文本。

在我看来,要创建初始会话:

<%= 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

params正确传递但我不确定是否正在创建cookie。有没有办法指定一个名称,以便我可以看到它是否已创建?同样在视图中,我是否有条件然后查看是否存在会话?

1 个答案:

答案 0 :(得分:1)

Rails会为您创建一个会话,因此您无需检查它是否存在。如果您想从会话中轻松检索用户,可以在应用程序控制器中创建一个帮助方法:

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

    helper_method :current_user
end

此方法可供您应用中的其他控制器和视图使用。