传递的是获取请求,而不是来自 new.html 的 post 请求
Get Request is passed instead of post request from new.html
我正在 rails 尝试在 ruby 中进行基本登录和注册,
问题:当我从 new.html 单击注册按钮时,我收到 GET 请求,但我可以在 html 的页面源代码中看到 method="post"
我在下面 post 编辑了我的代码
new.html.erb
<form>
<%= form_for(@user) do |f| %>
<%= f.label :user_name %>
<%= f.text_field :user_name %></br>
<%= f.label :email_id %>
<%= f.text_field :email_id %></br>
<%= f.label :password %>
<%= f.password_field :password %></br>
<%= f.label :college %>
<%= f.text_field :college %></br>
<%= f.label :major %>
<%= f.text_field :major %></br>
<%= f.label :current_job %>
<%= f.text_field :current_job %></br>
<%= f.submit("Create Account",class: "btn btn-primary") %>
<% end %>
</form>
我的 index.html.erb 在应用程序启动时加载的代码
<div class="container">
<div class="row">
<div class="login">
<%= form_tag("/user/login",:method => :post) do %>
<%= label_tag(:EmailId) %>
<%= text_field_tag(:email, params[:email]) %></br>
<%= label_tag(:password) %>
<%= password_field_tag(:password, params[:password]) %></br>
<%= submit_tag("Log In",class: "btn btn-primary") %>
<%= submit_tag("Register",class: "btn btn-primary") %>
<% end %>
</div>
</div>
</div>
我的控制器代码
class UsersController < ApplicationController
def index
@user = User.all
end
def login
print "In Sign in controller"
@user = User.new
if params[:commit] == 'Register'
print "inside Register class"
redirect_to '/users/new'
else
@user = User.find(params[:email_id])
if @user and user.authenticate(params[:password])
sessions[:userId] = @user.user_id
end
end
end
def new
puts "****Inside New Method******"
@user = User.new
end
def create
puts "****Inside create Method******"
end
private
def user_params
end
end
我的路线代码
Rails.application.routes.draw do
root 'users#index'
resources :users
post '/users/login' => 'users#login'
根据我的理解 post 请求应该命中 create 方法,但是 get /users 方法命中了。请帮我解决这个问题
您在另一个表单标签中有一个表单标签。删除表单顶部的标签。 <%= form_for(@user) %>
负责构建正确表格所需的一切。
为什么 new.html.erb
中有嵌套表单?删除第一个 form
标签
<form>
<%= form_for(@user) do |f| %>
我正在 rails 尝试在 ruby 中进行基本登录和注册, 问题:当我从 new.html 单击注册按钮时,我收到 GET 请求,但我可以在 html 的页面源代码中看到 method="post" 我在下面 post 编辑了我的代码 new.html.erb
<form>
<%= form_for(@user) do |f| %>
<%= f.label :user_name %>
<%= f.text_field :user_name %></br>
<%= f.label :email_id %>
<%= f.text_field :email_id %></br>
<%= f.label :password %>
<%= f.password_field :password %></br>
<%= f.label :college %>
<%= f.text_field :college %></br>
<%= f.label :major %>
<%= f.text_field :major %></br>
<%= f.label :current_job %>
<%= f.text_field :current_job %></br>
<%= f.submit("Create Account",class: "btn btn-primary") %>
<% end %>
</form>
我的 index.html.erb 在应用程序启动时加载的代码
<div class="container">
<div class="row">
<div class="login">
<%= form_tag("/user/login",:method => :post) do %>
<%= label_tag(:EmailId) %>
<%= text_field_tag(:email, params[:email]) %></br>
<%= label_tag(:password) %>
<%= password_field_tag(:password, params[:password]) %></br>
<%= submit_tag("Log In",class: "btn btn-primary") %>
<%= submit_tag("Register",class: "btn btn-primary") %>
<% end %>
</div>
</div>
</div>
我的控制器代码
class UsersController < ApplicationController
def index
@user = User.all
end
def login
print "In Sign in controller"
@user = User.new
if params[:commit] == 'Register'
print "inside Register class"
redirect_to '/users/new'
else
@user = User.find(params[:email_id])
if @user and user.authenticate(params[:password])
sessions[:userId] = @user.user_id
end
end
end
def new
puts "****Inside New Method******"
@user = User.new
end
def create
puts "****Inside create Method******"
end
private
def user_params
end
end
我的路线代码
Rails.application.routes.draw do
root 'users#index'
resources :users
post '/users/login' => 'users#login'
根据我的理解 post 请求应该命中 create 方法,但是 get /users 方法命中了。请帮我解决这个问题
您在另一个表单标签中有一个表单标签。删除表单顶部的标签。 <%= form_for(@user) %>
负责构建正确表格所需的一切。
为什么 new.html.erb
中有嵌套表单?删除第一个 form
标签
<form>
<%= form_for(@user) do |f| %>