我对REST路线感到困惑:
我有一个用户可以注册的用户注册表单。我正在使用 form_for 作为表单构建器 -
<%= form_for @user do |f| %>
我想要实现的目标:像users/signup
这样的路径会导致用户控制器和注册(这是非常明显的)操作,而不是users/new
(GET)。我还希望能够POST到相同的方法(intead of“users”(POST))=&gt;所以,基本上,POST和GET的注册动作。
我也想知道,如果我需要使用new_users_path
而不是“@user”(所以它看起来像这样:
<%= form_for new_users_path do |f| %>
* form_for *中的 - 因为,当我使用new_users_path
时,由于某种原因我得到了字段名称: name =“/ users / new [username]”而不是 name =“user [username]”
有人可以帮我这个吗?
提前致谢!
答案 0 :(得分:1)
使用:
match 'users/signup', via: [:post, :get]
resources :users, except: [:new, :create]
rake routes
命令给出:
users_signup POST|GET /users/signup(.:format) users#signup
users GET /users(.:format) users#index
edit_user GET /users/:id/edit(.:format) users#edit
user GET /users/:id(.:format) users#show
PUT /users/:id(.:format) users#update
DELETE /users/:id(.:format) users#destroy
用法:
<%= form_for User.new, url: users_signup_path do |f| %>
我希望这就是你想要的。
答案 1 :(得分:0)
你必须检查它的api:
form_for(record_or_name_or_array, *args, &proc)
第一个参数应该是一个对象(.e.g“record”),而不是一个“route”。
如果您希望接受网址,请检查form_tag
来下载searchable API。