【问题标题】:Rails form with custom path & getting missing required ID key带有自定义路径的 Rails 表单 & 缺少所需的 ID 密钥
【发布时间】:2016-05-01 00:34:52
【问题描述】:

我知道我以某种方式违反了 Rails 约定导致错误,但我不知道是什么...

# controller
def membership
   @user = User.new(user_type:"member")
end
def membership_create
   @user = User.find(params[:id])
   ...
end

# routes
match '/membership/create.:id', to: "users#membership_create", via: :post, as: "create_member"

# view
# have tried the following based on various other answers, doesn't work
<%= form_for @user, :url => create_member_path(@user), method: :post do |f| %>
<%= form_for @user, :url => create_member_path(@user) do |f| %>

不断收到错误消息:No route matches {:action=&gt;"membership_create", :controller=&gt;"users", :id=&gt;nil} missing required keys: [:id]

【问题讨论】:

  • 斜线代替点match '/membership/create/:id', to: "users#membership_create", via: :post, as: "create_member"
  • 您的路线需要 ID

标签: ruby-on-rails forms ruby-on-rails-4 routing routes


【解决方案1】:

为什么不是/membership/create/:id 而不是/membership/create.:id

但是,你只是从你的会员方法建立一个新用户:

def membership
  @user = User.new(user_type:"member")
end

这个用户还没有id。因此,当您将其传递到表单的路径中时:

<%= form_for @user, :url => create_member_path(@user) do |f| %>

idnil

但是,您的membership_create 需要id? - (在路由中配置)记住此时这将为零。除非你奇迹般地在循环中的某处包含了id,我看不到,或者这两种方法不像我想的那样直接相关。

【讨论】:

  • omg...我只是复制了错误的默认脚手架代码...好吧拍我
猜你喜欢
  • 2015-07-30
  • 2016-04-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-15
  • 2015-02-05
  • 1970-01-01
  • 2017-04-27
相关资源
最近更新 更多