没有路由匹配缺失:id(Ruby on Rails)

时间:2017-07-11 22:19:56

标签: ruby-on-rails

您好这是我的编辑控制器代码

def edit 
  @email = Email.where("organization_id = ? and id = ?", current_users_user.organization_id, params[:id]).first
end

我的html文件代码

<%= form_for @email, url: email_path(@email) do |f| %>

这些是我的路线......

resources :emails, :only => %w(index new create edit update destroy)

我不太确定接收此消息我可能做错了什么,因为这是我在整个项目中的表现。

enter image description here enter image description here

2 个答案:

答案 0 :(得分:0)

你绝对确定:

@email = Email.where("organization_id = ? and id = ?", current_users_user.organization_id, params[:id]).first

返回记录?

要检查,你可以这样做:

puts "current_users_user.organization_id: #{current_users_user.organization_id}"
puts "params[:id]: #{params[:id]}"
@email = Email.where("organization_id = ? and id = ?", current_users_user.organization_id, params[:id]).first
puts "@email.nil?: #{@email.nil?}"

看看你的控制台出现了什么(kludgy,但可以在紧要关头工作)。

另外,出于好奇,你为什么不这样做:

@email = Email.find_by(id: params[:id], organization_id: current_users_user.organization_id)

或者只是:

@email = Email.find_by(id: params[:id])

好像organization_id似乎是多余的,但我可能会遗漏一些东西。

答案 1 :(得分:0)

发生的事情是我没有收到电子邮件的控制器类。