使用rails5的form_with,我想通过单击GET按钮显示当前时间文本。但是文字没有更新。
文本未更新。
users_controller.rb正在关注。
require 'date'
class UsersController < ApplicationController
def index
@message = Time.now.to_s
end
end
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 } %>
请告诉我如何在当前时间更新文本。
注意:
按下链接(由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)
答案 0 :(得分:4)
您可以尝试以下吗?
<%= form_with method: :get, url: users_path, local: true do |form| %>
我在您的日志中注意到
通过UsersController#index作为JS处理
,这意味着表单是通过format: :js
提交的,因为您可以看到HERE,form_with
现在默认为remote: true
(您不能执行remote: false
但是,与local: true
和form_for
不同,默认情况下form_tag
使用remote: false
),而不是remote: true
。
答案 1 :(得分:1)
<div><%= @message %></div>
<%= form_tag(users_path, method: :get) do%>
<%=submit_tag 'SUBMIT'%>
<% end %>
<%= link_to 'LINK', { :controller => :users, :action => :index } %>
或
<%= form_with url: users_path, method: :get do |form| %>
<%= form.submit 'SUBMIT'%>
<%end%>
<%= link_to 'LINK', { :controller => :users, :action => :index } %>