【问题标题】:Get Request is passed instead of post request from new.html通过获取请求而不是来自 new.html 的发布请求
【发布时间】:2016-11-26 06:35:41
【问题描述】:

我正在尝试在 ruby​​ on rails 中进行基本登录和注册, 问题:当我单击 new.html 中的注册按钮时,我收到了 GET 请求,但我可以在该 html 的页面源代码中看到 method="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 方法正在命中。请帮我解决这个问题

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-4 ruby-on-rails-3.2


    【解决方案1】:

    为什么new.html.erb 中有嵌套表单?去掉第一个form标签

    <form>
      <%= form_for(@user) do |f| %>
    

    【讨论】:

      【解决方案2】:

      您在另一个表单标签内有一个表单标签。删除表单顶部的标签。 &lt;%= form_for(@user) %&gt; 负责构建正确表单所需的一切。

      【讨论】:

        猜你喜欢
        • 2022-01-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-02-11
        • 2012-07-18
        • 1970-01-01
        • 2021-12-30
        • 1970-01-01
        相关资源
        最近更新 更多