我已经创建了一个长度的表单,为此我设置了一个ajax保存按钮,以便用户可以保存他们的进度并继续编辑表单。这非常有效;没什么好抱怨的。
我的问题是我希望在用户完成编辑并希望进行最终提交时,表单末尾的第二个按钮。功能上的关键区别在于它在保存后重定向到“表单已提交,谢谢等等等等”页面。
我已尝试使用标准提交按钮(<%= f.button :submit, "Submit", id:"incorporation_submit", class: "btn btn-primary" %>
),但这似乎无效;没有提交,也没有点击日志中的任何内容。 (我猜它是因为我已经为表格定义了遥控器)。
我的表格概述如下;我删除了表单字段和侧边栏内容以最大限度地减少混乱。最终提交按钮是上面显示的f.button :submit
。
<div id="wrapper" class="active main-content">
<%= simple_form_for @incorporation, :remote => true do |f| %>
<div>
.
.
.
Form contents
.
.
.
</div>
<!-- Sidebar -->
<!-- Sidebar -->
<div id="sidebar-wrapper">
<ul id="sidebar_menu" class="sidebar-nav">
<li class="sidebar-brand"><a id="menu-toggle" href="#">Menu<span id="main_icon" class="glyphicon glyphicon-align-justify"></span></a></li>
.
.
.
Sidebar navigation tools
.
.
.
</ul>
<%= button_to "Save Progress", incorporation_path(@incorporation), remote: true, id:"save" %>
</div>
<div>
<%= f.button :submit, "Submit", id:"incorporation_submit", class: "btn btn-primary" %>
</div>
<% end %>
</div>
更新1:
如果我从:remote=> true
中移除simple_form_for
,则提交按钮可以正常工作,重定向和所有(显然ajax保存按钮不会)
更新2:
我发现,如果我从侧边栏中删除button_to
,我会从日志中获得输出;但是我无法成功将浏览器重定向到我在控制器中设置的静态页面。见下面的输出:
Redirected to http://localhost:3000/welcome/index
Completed 302 Found in 134ms (ActiveRecord: 11.2ms)
Started GET "/welcome/index" for 127.0.0.1 at 2015-02-10 01:39:21 -0700
Processing by WelcomeController#index as JS
Rendered welcome/index.html.erb within layouts/application (0.2ms)
User Load (4.2ms) SELECT `users`.* FROM `users` WHERE `users`.`id` = 1 ORDER BY `users`.`id` ASC LIMIT 1
Completed 200 OK in 1747ms (Views: 1740.3ms | ActiveRecord: 4.2ms)
答案 0 :(得分:1)
听起来两个按钮都应该调用控制器中的更新操作。然后,您可以检查参数&#39; commit&#39;并按照您的意愿处理您的回复。例如,
视图中的按钮:
<%= form.submit 'Save' %>
<%= form.submit 'Update' %>
检查控制器中单击了哪个按钮:
if params[:commit] == 'Save'
... redirect somewhere ...
else
... do something else ...
end