所以我会尽力尝试解释这个问题。我正在参加Rails教程,并且在POST和Debug部分有点困难。
第一个问题:我创建了一个注册表单。教程说要点击"注册!"按钮,看看会发生什么。显然什么都不会发生,除非我点击"注册!"按钮我收到错误No route matches [POST] "/register"
。我该如何解决这个问题?
第二个问题:
然后我们在application.html.erb
部分添加了一个调试函数,如下所示:
<% if ENV['RAILS_ENV'] == 'development' %>
<%= debug(params) %>
<% end %>
他们说尝试使用用户名创建用户:foo密码:baz email:bar,看看会发生什么。显然,当我点击注册它不应该改变页面但只是在调试功能中显示一些东西?
我的调试功能显示了这一点,直到我点击注册按钮然后它给我错误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
答案 0 :(得分:0)
你做错了路由。你声明get方法进行注册。但它应该是post方法。
您必须将路线更改为
post 'register', to: 'users#register'