我试图创建一个有两个按钮的表单。一个是submit
按钮,但我也希望有第二个按钮,允许创建表单所需的元素,如果它不存在。
就像这样:
<%= simple_form_for @class do |f| %>
<%= f.input :title %>
<%= f.association :teacher %>
<%= f.button :new_teacher, new_teacher_path, "Add a Teacher" %>
<%= f.button :submit %>
<% end %>
字符串
当:new_teacher
按钮被点击时,我希望新的教师视图打开,然后用户填写,提交它,然后返回创建类。有没有一种合理的方法来做到这一点?
这主要是一个设计问题,感觉按钮应该“在”表单中,这样如果用户在填写表单时遇到缺少的项目,他/她可以很容易地创建它。
2条答案
按热度按时间vyswwuz21#
我发现的一个解决方案是使用
link_to
助手,将链接样式设置为按钮。像这样:字符串
我尝试使用
button_to
而不是link_to
,看起来Simple Form足够聪明,可以注意到这一点,并假设按钮应该在表单的上下文中操作,所以我没有得到我想要的路径。rslzwgfq2#
这与此并没有太大关系,但它可能会帮助那些正在寻找如何使用按钮发送请求的人,包括参数。为了清晰起见,让我们将其分解。我们将介绍默认的请求类型以及如何在Rails中修改它,包括版本5之前和之后
当然,这里有一个简化的之前和之后Rails 5的细分:
Rails 5之前:
*默认请求类型:表单和按钮发送HTML请求。
*用于JSON请求:将
remote: true
添加到表单和按钮中,以使用Ajax发送JSON请求。Rails 5之后:
*默认请求类型:表单和按钮默认使用JavaScript(Ajax)发送JSON请求。
*对于HTML请求:在表单和按钮中使用
local: true
切换回发送HTML请求。Rails 5之前的示例
默认请求类型:HTML
发送HTML请求:
1.形式:
字符串
默认行为,作为HTML请求提交。
1.按钮:
型
作为HTML请求提交。
1.友情链接:
型
作为标准链接(HTML GET请求)。
发送JSON请求:
1.形式:
型
使用Ajax进行提交(可以处理JSON响应)。
1.按钮:
型
指定JSON格式并使用Ajax。
1.友情链接:
型
指定JSON格式并发出Ajax请求。
Rails 5之后
默认请求类型:JavaScript(Ajax)
发送HTML请求:
1.形式:
型
指定
local: true
作为HTML提交。1.按钮:
型
为HTML提交指定
local: true
。1.友情链接:
型
作为标准链接(HTML GET请求)。
发送JSON请求:
1.形式:
型
默认行为,作为Ajax请求提交(可以处理JSON响应)。
1.按钮:
型
指定JSON格式,默认Ajax提交。
1.友情链接:
型
指定JSON格式、标准链接行为。