Ruby on rails 如何从post表单获取值并在rails控制器中使用它们
我的控制器需要使用表单中的值来获取用户并启动会话 这些值似乎没有被发布,会话从未启动,else语句似乎总是被执行,而不是if语句 控制器Ruby on rails 如何从post表单获取值并在rails控制器中使用它们,ruby-on-rails,Ruby On Rails,我的控制器需要使用表单中的值来获取用户并启动会话 这些值似乎没有被发布,会话从未启动,else语句似乎总是被执行,而不是if语句 控制器 def new end def create uid = params[:uid] role = params[:role] user=User.find_by(userid:uid,role:role) if user session[ :user_id]=user.id red
def new
end
def create
uid = params[:uid]
role = params[:role]
user=User.find_by(userid:uid,role:role)
if user
session[ :user_id]=user.id
redirect_to controller: 'stuff', action: 'index'
else
render 'new', alert:
"err"
end
end
new.html.erb视图
<h1 class ="card-header"> Log IN </h1>
<%= form_for :session, url: sessions_path do |f| %>
<div class="form-group">
<%= f.label :uid %>
<%= f.text_field :uid %>
</div>
<div class="form-group">
<%= f.label :role %>
<%= f.text_field :password %>
</div>
<div class="form-group">
<%= submit_tag 'Log In' %>
</div>
<% end %>
</div>
您的uid和role参数将在名为session的符号中可用 所以这些参数看起来像这样
参数:{
#其他符号
会议:{
uid://您的uid,
角色://你的角色
}
}
因此,当您像这样访问uid和角色时
uid=params[:uid]
角色=参数[:角色]
它将为零,因为它们存储在会话的符号中
因此,访问它们的正确方法如下
def创建
uid=params[:会话][:uid]
角色=参数[:会话][:角色]
user=user.find_by(userid:uid,role:role)
如果用户
会话[:user\u id]=user.id
将_重定向到控制器:'stuff',操作:'index'
其他的
呈现“新”,警报:
“呃”
结束
结束
请发布您的rails服务器logs@Coder1234很高兴我能帮忙,没必要:)
resources :sessions