Rails,从NEW重定向到CREATE

时间:2010-11-23 01:38:44

标签: ruby-on-rails

嘿所有,我正在编写一个应用程序来处理体育赛事的注册。其中一些活动每次入场有多名运动员,而有些运动员只有一名运动员。我现在正在将运动员送到BoatsController的新动作,如此:

<%= link_to 'Register', new_event_boat_path(@event) %>

我的问题是,如果新操作发现事件每个船只需要一个用户,我该如何将用户直接转发给CREATE操作?更简洁的是,如何从动作中生成POST?

3 个答案:

答案 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或您要创建的任何对象。