注册表调试&发布问题

时间:2015-08-12 18:15:43

标签: ruby-on-rails ruby

所以我会尽力尝试解释这个问题。我正在参加Rails教程,并且在POST和Debug部分有点困难。

第一个问题:我创建了一个注册表单。教程说要点击"注册!"按钮,看看会发生什么。显然什么都不会发生,除非我点击"注册!"按钮我收到错误No route matches [POST] "/register"。我该如何解决这个问题?

第二个问题: 然后我们在application.html.erb部分添加了一个调试函数,如下所示:

<% if ENV['RAILS_ENV'] == 'development' %>
        <%= debug(params) %>
    <% end %>

他们说尝试使用用户名创建用户:foo密码:baz email:bar,看看会发生什么。显然,当我点击注册它不应该改变页面但只是在调试功能中显示一些东西?

enter image description here

我的调试功能显示了这一点,直到我点击注册按钮然后它给我错误No route matches [POST] "/register"

--- !ruby/hash:ActionController::Parameters
controller: users
action: register

在书中显示您没有收到错误No route matches [POST] "/register",而是在调试功能中获得此文字...

--- !ruby/hash:HashWithIndifferentAccess
user: !ruby/hash:HashWithIndifferentAccess
screen_name: foo
password: baz
email: bar
commit: Register!
action: register
controller: users

任何人都知道这里发生了什么?

只是想让我知道我的一些代码:

的routes.rb

  Rails.application.routes.draw do
      get '/users', to: 'users#index'

      get 'register', to: 'users#register'

      get '/site', to: 'site#index'

      get '/about', to: 'site#about'

      get '/help', to: 'site#help'

      resources :users, only: %w(index) do
        get :register, on: :collection
      end

      root 'site#index'

Users.controller.rb

class UsersController < ApplicationController
  def index
  end

  def register
    @title = 'Register'
    if request.post? and params[:user]
      @user = User.new(params[:user])
      if @user.save
        render :text => 'Welcome to WorkLink!'
      # Output goes to log file (log/development.login development mode)
      logger.info params[:user].inspect
      end
    end
  end
end

1 个答案:

答案 0 :(得分:0)

你做错了路由。你声明get方法进行注册。但它应该是post方法。

您必须将路线更改为

post 'register', to: 'users#register'