我很难搞清楚最佳做法......
我希望以用户可以关注汽车的方式创建“跟随”系统(在汽车价格变化时获取电子邮件更新等)。令我头疼的实现部分是我想通过仅使用电子邮件引入延迟注册。
所有都需要以AJAX 请求的方式运行。
在界面中,会有一个触发跟随操作的按钮,用于检查用户是否已注册。如果用户已登录,请创建新的CarSubscription
项目,否则显示可以键入其电子邮件地址的表单。提交后,表单应创建一个没有密码的用户(如果存在电子邮件,请求输入密码并登录),然后创建关系项。
此处的挑战是在将表单提交到CREATE
的{{1}}操作后使用重定向。由于我无法使用CarSubscriptionController
重定向,因此我无法模拟POST
或CREATE
操作。
非RESTful解决方案是在DESTROY
下创建2个操作:关注和取消关注,让他们执行创建条目和删除条目的逻辑。这样我就可以存储请求路径,并在用户输入电子邮件并登录后使用它。
如何使用RESTful资源实现我想要的目标?
在尝试描述我的问题后,似乎太复杂了,我确实非常困难......在这种情况下,有3个不同的控制器,可能还有4个请求。
非常感谢任何帮助!
请参阅下面的流程图:
答案 0 :(得分:1)
这里不是专家,我不知道这是否是最佳解决方案,但我在类似情况下所做的是:
$.post(...)
向您的控制器操作发出POST
您也可以使用ActiveResource来实现这一目标,但实际上我从未尝试过这个解决方案:http://api.rubyonrails.org/classes/ActiveResource/Base.html#label-Custom+REST+methods
Person.new(:name => 'Ryan').post(:register)
希望这有帮助
答案 1 :(得分:1)
我有一个非常相似的需求,并且无法将有关如何使用Devise和Rails的各种信息拉到一个工作示例中。这是一个基于Rails 4,Ruby 2和Devise 3.0的完整工作示例: