大家好,我正在写一个应用程序来处理体育赛事的注册。其中一些项目每次参赛有多名运动员,而另一些只有一名运动员。我现在将运动员发送到BoatsController上的新动作,如下所示:
<%= link_to 'Register', new_event_boat_path(@event) %>我的问题是,如果新操作看到事件只需要每艘船一个用户,我如何将用户直接转发到CREATE操作?更简洁地说,如何从操作中生成帖子?
发布于 2010-11-23 10:30:19
def new
#assuming boats is an array
if boats.size > 1
redirect_to boats_path(:user => params[:user], :boat => params[:boat]), :method => :post
else
#new stuff
end
endboats_path或您尝试创建的任何对象。
发布于 2011-09-11 01:36:43
你不需要做任何花哨的事情。create操作只是控制器中的一个方法。您可以像调用任何其他方法一样调用它:
def new
if event_only_requires_one_user_per_boat
create
else
#display new form
end
end此外,这种技术可以防止用户必须发出多个请求,因为它不会使用户重定向。
发布于 2010-11-23 10:26:14
相反,您可以创建一个方法来封装create操作中的大部分代码,并从create (通常使用参数)和new中的特殊情况(从user对象发送数据)调用它。
https://stackoverflow.com/questions/4251953
复制相似问题