Ruby on rails 如何从post表单获取值并在rails控制器中使用它们

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

我的控制器需要使用表单中的值来获取用户并启动会话

这些值似乎没有被发布,会话从未启动,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
        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