嘿所有,我正在编写一个应用程序来处理体育赛事的注册。其中一些活动每次入场有多名运动员,而有些运动员只有一名运动员。我现在正在将运动员送到BoatsController
的新动作,如此:
<%= link_to 'Register', new_event_boat_path(@event) %>
我的问题是,如果新操作发现事件每个船只需要一个用户,我该如何将用户直接转发给CREATE操作?更简洁的是,如何从动作中生成POST?
答案 0 :(得分:4)
你不需要做任何花哨的事情。 create动作只是控制器中的一种方法。你可以像任何其他方法一样调用它:
def new
if event_only_requires_one_user_per_boat
create
else
#display new form
end
end
此外,此技术可防止用户发出多个请求,因为它不会使用户重定向。
答案 1 :(得分:1)
您可以创建一个方法来封装create操作中的大部分代码,并从create(使用params)和新的特殊情况(从用户对象发送数据)中调用它。
答案 2 :(得分:-1)
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
end
boats_path
或您要创建的任何对象。