我有一个表单,我希望用户将其名称和电子邮件放入会话中。然后他们可以在聊天框中发布文本。
在我看来,要创建初始会话:
<%= 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。有没有办法指定一个名称,以便我可以看到它是否已创建?同样在视图中,我是否有条件然后查看是否存在会话?
答案 0 :(得分:1)
Rails会为您创建一个会话,因此您无需检查它是否存在。如果您想从会话中轻松检索用户,可以在应用程序控制器中创建一个帮助方法:
class ApplicationController < ActionController::Base
def current_user
@current_user ||= session[:new_user_account]
end
helper_method :current_user
end
此方法可供您应用中的其他控制器和视图使用。