【问题标题】:Rails render not showing in browser, despite positive server reply尽管服务器回复积极,但 Rails 渲染未显示在浏览器中
【发布时间】:2018-06-01 16:25:58
【问题描述】:

我在 Rails 中使用“渲染”时遇到了问题。我的控制器中有一个自定义操作“搜索”,它应该呈现索引,如下所示。

def search
    @date = params[:reserve_date]
    @tables = Table.all
    render 'index'
end

使用以下代码在不同的视图中使用该操作:

<%= form_with url: search_tables_path do |f| %>
<%= f.date_field :reserve_date %>
<%= submit_tag "SEND" %>
<% end %>

按下“发送”按钮后,应呈现“索引”视图。服务器状态:

在布局/应用程序中渲染表/index.html.erb (25.0ms)

在 127 毫秒内完成 200 次 OK(查看次数:123.2 毫秒 | ActiveRecord:3.0 毫秒)

但是,浏览器中根本没有显示任何内容。它停留在上一页没有变化。如果我尝试通过这样的链接访问索引视图:

然后索引视图正在正常显示,但是我当然不会传递任何额外的信息。我怎样才能让它正确渲染?

编辑 HTML 中的表单标签似乎是完整的

<form action="/tables/search" accept-charset="UTF-8" data-remote="true" method="post"><input name="utf8" type="hidden" value="&#x2713;" /><input type="hidden" name="authenticity_token" value="4L/RNvCzlPX8PzDGk2LXcSiyrhzXVU3cwsLUmaQvq10y9HpESbH8CX+74n/UHxLJ5LUdiWYBdoaqCb2jFIYEgw==" />

这是我的 routes.rb 文件:

Rails.application.routes.draw do
  devise_for :users

  resources :tables do
  collection do
    post 'search'
    end
  end
  resources :reservations

  root 'home#index'
end

【问题讨论】:

  • 您正在显示的操作称为search。我以为您说您有一个名为show 的操作。您将需要展示您是如何设置路线的。
  • 使用浏览器的“显示源代码”功能或自动化测试来检查 form_with 生成的内容。它是真实的、完整的&lt;form&gt; 标签吗?编辑您的帖子并添加结果。
  • 连同@Phlip 询问的数据,将config/routes.rb 的内容也放入
  • @lurker 这是一个错字,我的意思是“搜索”操作。

标签: ruby-on-rails ruby


【解决方案1】:

使用form_with 生成的表单默认将data-remote 设置为true

如果 data-remote 设置为 true,您的表单将进行 AJAX 调用。因此,您的视图被呈现为该 AJAX 调用的响应。这就是您没有收到任何错误的原因。

在您的form_with 中添加local: true

您可以通过docs了解更多关于form_with的信息。

【讨论】:

    猜你喜欢
    • 2011-01-26
    • 2016-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-28
    • 2019-09-07
    • 1970-01-01
    相关资源
    最近更新 更多