【发布时间】:2015-02-05 19:51:36
【问题描述】:
完全错误:
No route matches {:id=>#<Reminder id: nil, medication: nil, time: nil, created_at: nil, updated_at: nil, user_id: 1>} missing required keys: [:id]
这是导致错误的 index.html.erb 中的代码:
<tbody>
<% @reminders.each do |reminder| %>
<tr <%= dom_id(reminder) %>>
<td><%= reminder.medication %></td>
<td><%= reminder.time %></td>
<td>
<%= link_to "Edit", edit_reminder_path(reminder) %>
or
<%= link_to 'Remove', reminder, method: :delete, data: { confirm: 'Are you sure?' } %>
</td>
</tr>
<% end %>
</tbody>
型号:
class Reminder < ActiveRecord::Base
validates :medication, presence: true
belongs_to :user
end
class User < ActiveRecord::Base
has_many :reminders
end
动作:
def index
@reminders = current_user.reminders
@reminder = current_user.reminders.new
end
def edit
end
路线:
Medy::Application.routes.draw do
devise_for :users
resources :reminders
root 'reminders#index'
end
我是否需要在编辑操作中添加一些内容才能完成这项工作?
在我将索引操作中的@reminders = Reminders.all 更改为@reminders = current_user.reminders 后,错误开始发生。
【问题讨论】:
-
在你的链接中做
edit_reminder_path(id: reminder.id) -
您的
@reminders具有非数据库持久化的对象。这就是为什么它有id:nil、medication: nil,并且只有user_id不是nil。你有没有创建过但没有保存到DB,可能用过Reminder.new -
@Nermin - 提醒是使用脚手架创建的。在我将索引操作中的
@reminders = Reminders.all更改为@reminders = current_user.reminders后,错误开始发生。 -
@Nithin - 也没有运气。
-
@Nithin : 非常感谢 nithin ..你的想法解决了我的问题
标签: ruby-on-rails routes