我想用轨道中的2个按钮创建一个窗体。两种形式都以不同的方式对相同的数据进行操作,我宁愿将关联的功能保留在两种不同的方法中。以前,我在params [:commit]上进行字符串比较后,重定向到适当的方法,但我的直觉告诉我们有更好的方法。建议?如何在Rails中创建一个包含许多可能操作的表单?
1
A
回答
0
我也在表单上使用了params [:commit]方法。使用I18n帮助程序可以减少这种情况,因为您可以在视图和控制器中使用相同的查找功能,所以您不会遇到字符串更改的问题。
除此之外,我只能想到使用JavaScript来处理按钮上的点击,然后将表单数据发送到不同的Rails动作(也许您可以在提交表单之前使用JavaScript更改表单的HTML动作属性) 。
0
如果您使用的是prototype.js,则可以使用Form.serialize()从表单中获取数据,然后使用不同的按钮发布到不同的操作。
1
不使用JavaScript,您唯一的解决方案就是您提到的:通过查看控制器中的POST数据来检查点击了哪个按钮。这仅仅是由于HTML表单元素的性质。它的动作属性不能有多个值。
如果您不担心JavaScript不可用会发生什么情况,那么您可以编写一些脚本,在实际提交表单之前单击其中一个提交按钮时更改操作属性。在ajax请求的情况下,它可以直接提交到正确的URL而不会改变表单上的属性。
2
两个不同的提交表格发送到两个不同的操作按钮:
<%= submit_tag('Insert', :onclick=>"document.myForm.action = 'insert';") %>
<%= submit_tag('Update', :onclick=>"document.myForm.action = 'update';") %>
而是“myForm会”的,你需要把无论是在你的标签的“名称”属性。
您可以设置该属性在默认的形式:像这样的标签:
<%= form_for(@something, :html => {:name => "myForm"}) do |f| %>
相关问题
- 1. 如何在Rails中将一个表单包含在另一个表单中?
- 2. django:如何从包含外键的多个模型中创建一个表单
- 3. 在Python中创建一个包含多个子包的包
- 4. 创建一个可以包含多个可单击链接的datagridview单元格?
- 5. 如何将多个值传递给Rails中的创建操作?
- 6. 如何创建一个只包含c进度条的表单#
- 7. 如何在mysql中创建一个包含3列的表?
- 8. 创建一个包含许多关联对象的对象
- 9. 在manifest.xml中注册一个包含许多操作的接收器
- 10. 如何在包含列表的mvc 2中创建表单?
- 11. 在Ruby on Rails中创建一个包含多对多关系的帖子
- 12. 如何创建一个允许数组像单值一样操作的方法?
- 13. 如何在Rails中创建多模型,多页面的表单?
- 14. RavenDB 3.0索引创建:表达式树可能不包含动态操作?
- 15. 创建表单操作可变
- 16. 如何创建一个包含多个FileHeaders的http请求?
- 17. 如何创建一个包含多个索引的std :: map?
- 18. Rails 3:如何调用创建操作表单Flex
- 19. 创建一个包含lambda的列表
- 20. Java创建一个包含多个对象的类的列表
- 21. 可能包含8或9个数字的正则表达式 - 如何操作?
- 22. Rails的工厂女孩创建一个关系列表许多
- 23. 在PHPMYADMIN中创建一个包含多个参数的过程
- 24. 创建一个android sqlite包含一个表只有单行
- 25. 如何在MFC中创建包含2个项目的菜单?
- 26. 创建一个包含多个调查结果的Excel图表
- 27. 创建一个包含多个数组的表格PHP
- 28. Rails 3在一个查询中包含多个表格
- 29. find_or_create_by在多个创建操作中?
- 30. 如何创建一个包含多个命名空间类型