Ruby on Rails自定义路由

时间:2012-09-12 07:47:47

标签: ruby-on-rails ruby ruby-on-rails-3 rest routes

我对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]”

有人可以帮我这个吗?

提前致谢!

2 个答案:

答案 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