【问题标题】:I want my edit route to re-render the page with an update and not actually link to the edit route我希望我的编辑路线通过更新重新呈现页面,而不是实际链接到编辑路线
【发布时间】: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


【解决方案1】:

在终端中执行rake routes。您应该会看到类似于edit_admin_front_desk_front_desk_profile 的内容,因此您需要在link_to 助手中使用edit_admin_front_desk_front_desk_profile_path(@front_desk_date)

【讨论】:

    猜你喜欢
    • 2019-10-26
    • 1970-01-01
    • 2019-02-15
    • 1970-01-01
    • 2018-07-26
    • 2014-12-28
    • 1970-01-01
    • 2021-07-20
    • 2021-10-26
    相关资源
    最近更新 更多