0

我对 REST 路由感到困惑:

我有一个用户注册表单,用户可以在其中注册。我使用form_for作为表单生成器 -

<%= form_for @user do |f| %>

我想要实现的事情:路径之类的users/signup会导致用户控制器和注册(这很明显)动作,而不是users/new(GET)。而且我还希望能够发布到相同的方法(而不是“用户”(POST))=>所以,基本上,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]"

有人可以帮我解决这个问题吗?

提前致谢!

4

2 回答 2

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| %>

我希望这是你想要的。

于 2012-09-12T08:20:08.933 回答
0

你必须检查它的api:

form_for(record_or_name_or_array, *args, &proc)

第一个参数应该是一个对象(例如“记录”),而不是“路线”。

如果你希望它接受一个 url,请检查form_tag

来下载一个可搜索的API

于 2012-09-12T08:01:43.717 回答