【问题标题】:Ruby on Rails custom routesRuby on Rails 自定义路由
【发布时间】:2012-09-05 04:39:17
【问题描述】:

我对 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="用户[用户名]"

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

提前致谢!

【问题讨论】:

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


    【解决方案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| %>
    

    我希望这是你想要的。

    【讨论】:

      【解决方案2】:

      你必须检查它的api:

      form_for(record_or_name_or_array, *args, &proc)
      

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

      如果您希望它接受 url,请检查 form_tag

      快来下载searchable API

      【讨论】:

      • 我可以通过对象。用于注册的 POST/GET 路由怎么样?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多