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 回答