【问题标题】:ActionController::UrlGenerationError missing required keys: [:id]ActionController::UrlGenerationError 缺少必需的键:[:id]
【发布时间】:2013-07-16 22:00:01
【问题描述】:

我是 ruby​​ 的新手 - 尝试使用 rails,但我已经被困在尝试做一个简单的注册表单了:

<%= form_for :user, url: user_path do |f| %>
    <p>
      <%= f.label :email %><br>
      <%= f.text_field :email %>
    </p>

    <p>
      <%= f.label :password %><br>
      <%= f.password_field :password %>
    </p>

    <p>
      <%= f.submit %>
    </p>
<% end %>

这是一个错误:

No route matches {:action=>"show", :controller=>"user"} missing required keys: [:id]

谁能解释一下这到底是什么意思?

编辑:

我正在关注本教程,只是将帖子更改为用户:http://guides.rubyonrails.org/getting_started.html

【问题讨论】:

  • 您是否为show行动设置了注册表?
  • 我对 ruby​​ 和 rails 非常陌生,所以现在这没有意义。我完全按照官方教程进行操作,但只将帖子更改为用户

标签: ruby-on-rails ruby


【解决方案1】:

form_for 应该总是得到一个对象......就像来自控制器的用户

# controller
def new
  @user = User.new
end

# form
<%= form_for @user,...

或者你可以使用不依赖对象的form_tag方法..

【讨论】:

【解决方案2】:

我也遇到过类似的问题。

控制器名称应该是复数(即用户)和

new.html.rb 的第一行应该是这样的:

<%= form_for :user, url: users_path do |f| %>

【讨论】:

    猜你喜欢
    • 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
    相关资源
    最近更新 更多