我是rails的新手,我想知道这是否是我想要做的最佳方式。
我有一个创建实体的控制器。
根据提交的内容,我想从头开始创建一个新实体,或者复制现有实体。
到目前为止我已经
了def create
if(params[:copy])
return copy_existing_entity params
else
return create_new_entity params
end
end
到目前为止,这感觉很糟糕 - 这应该采用不同的方式吗?
来自java spring,我只想在控制器上定义单独的处理程序,如下所示:
@RequestMapping(method = RequestMethod.POST, params="submit=Action 1")
public ModelAndView action1(@RequestParam("selectedItemKey") String key) {
ModelAndView mav = new ModelAndView("action1");
//Business logic
return mav;
}
@RequestMapping(method = RequestMethod.POST, params="submit=Action 2")
public ModelAndView action2(@RequestParam("selectedItemKey") String key) {
ModelAndView mav = new ModelAndView("action2");
//Business logic
return mav;
}
rails会提供类似的东西,还是我想错了?
感谢您的任何建议
答案 0 :(得分:1)
这看起来有点糟糕。首先,你为什么要首先复制实体?你的用例是什么?
其次,你可能把逻辑放在了错误的地方。您应该(1)具有单独的create
和copy
控制器操作,或者(2)将params
传递给模型类,并让它确定它是在创建还是复制。 / p>
答案 1 :(得分:0)
你可以轻松地将它拆分为两个控制器动作,但实际上我确实相信在这两种情况下你都在创建一个新的实体。所以POST :create
是一种很好的REST方式。如果你必须创建一个填充了给定属性的新项目,或者创建一个新项目作为另一个项目的副本并不重要imho。