Rails form_with方法:get无法更新视图

Yuk*_*i.M 2 ruby-on-rails

使用rails5的form_with,我想通过单击GET按钮显示当前时间文本。但是文本不会更新。

虽然我按了按钮 在此处输入图片说明

文字未更新。

在此处输入图片说明

响应文本已更新。 在此处输入图片说明

users_controller.rb正在关注。

require 'date'
class UsersController < ApplicationController
  def index
    @message = Time.now.to_s
  end
end                                                                                                     
Run Code Online (Sandbox Code Playgroud)

index.html.erb正在关注。

<div><%= @message %></div>
<%= form_with method: :get, url: users_path do |form| %>
    <%= form.submit 'SUBMIT'%>
<% end %>
<%= link_to 'LINK', { :controller => :users, :action => :index } %>
Run Code Online (Sandbox Code Playgroud)

请告诉我如何在当前时间更新文本。

注意:

当按下链接(通过link_to辅助方法呈现)时,文本将更新。

按链接...

在此处输入图片说明

然后更新文字。

在此处输入图片说明

为什么我可以通过链接更新文本?

编辑:

单击按钮后的服务器日志如下。

Started GET "/users?utf8=%E2%9C%93&commit=SUBMIT" for 127.0.0.1 at 2018-08-17 19:13:32 +0900
Processing by UsersController#index as JS
  Parameters: {"utf8"=>"?", "commit"=>"SUBMIT"}
  Rendering users/index.html.erb within layouts/application
  Rendered users/index.html.erb within layouts/application (4.7ms)
Completed 200 OK in 153ms (Views: 112.5ms | ActiveRecord: 0.0ms)
Run Code Online (Sandbox Code Playgroud)

Jay*_*rio 5

您可以尝试以下吗?

<%= form_with method: :get, url: users_path, local: true do |form| %>
Run Code Online (Sandbox Code Playgroud)

说明:

我在您的日志中注意到

由UsersController#index作为JS处理

这意味着形式与提交format: :js,因为form_with现在默认remote: true你可以看到这里(你不能做remote: false然而,而是使用local: true),不像form_forform_tag地方remote: false默认,但你指定remote: true