【发布时间】:2015-08-10 15:55:34
【问题描述】:
我一直在研究这个问题,但我仍然不明白它是如何工作的。我正在尝试实现一项功能,以允许用户更新应用程序中的现有事件。我在链接中添加了“编辑”,如果按下“编辑”,表单会填入事件的属性,我希望它。我有一个看起来像这样的页面:
从这里用户应该能够创建、更新和删除事件。
我似乎无法弄清楚路线如何更新。 (或者也许我应该使用编辑?)这是我的部分显示的样子:
.right-half#FrontDeskEventTable
%h1 Events
=render partial: 'form'
%table.color-table
-@front_desk_date.front_desk_date_events.each do |t|
%tr
- next if t.new_record?
%td{style: 'padding: 10px;'}= t.subject
%td= link_to "Edit", admin_front_desk_front_desk_profile_path(@front_desk_date, "#{t.id}"), method: :update
%td{style: 'padding: 0px 5px 0px 30px;'}= link_to "Delete", admin_front_desk_date_front_desk_date_event_path(@front_desk_date, "#{t.id}"), method: :delete, confirm: "Delete #{t.subject}?"
在我的 front_desk_date_events_controller 中:
def edit
@front_desk_date_event = @front_desk_date.front_desk_date_events.find(params[:id])
render :update do |page|
page.replace_html 'FrontDeskEventTable', partial: 'form', object: @front_desk_date_event
end
end
当用户点击编辑时,它会导致页面 admin/front_desk_dates/1/front_desk_date_events/2/edit 如下所示:
Element.update("FrontDeskEventTable", "\u003Cform accept-charset=\"UTF-8\" action=\"/intranet/admin/front_desk_dates/1/front_desk_date_events/2\" class=\"edit_front_desk_date_event, etc, etc
如果有人愿意阅读整篇文章并提供帮助,我将不胜感激。
【问题讨论】:
-
请添加准确的错误信息和您的
routes.rb。 -
- 如果 t.new_record 是下一个?你为什么这样做?
-
顺便说一句:更新事件不应呈现模板 - 它应该更新某些内容,然后重定向回显示/编辑操作
-
link_to "edit", edit_admin_bla_path(object) 不需要指定动作
-
抱歉,如果您以“非 Rails 方式”进行操作,这里没有真正的帮助。在 Rails 中,您的控制器正在显示一个对象,编辑呈现表单,更新正在更新然后重定向。您的控制器是错误的(尤其是您的路线)。难怪您会遇到路由错误,因为您以完全错误的方式使用路由。如果您想显示一个表单来创建一个新对象,或者通过单击将数据加载到其中然后更新它,您需要注意就地编辑 gem 或使用大量 javascript 和 ajax 编写自己的东西。
标签: ruby-on-rails routes