代码之家  ›  专栏  ›  技术社区  ›  Sam Ritchie

Rails,从NEW重定向到CREATE

  •  2
  • Sam Ritchie  · 技术社区  · 13 年前

    嘿,大家好,我正在写一个应用程序来处理体育赛事的注册。其中有些项目每次参赛都有多名运动员,而有些项目只有一名运动员。我现在派运动员参加 BoatsController 就像这样:

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

    我的问题是,如果新操作发现事件只需要每艘船一个用户,那么如何将用户直接转发到CREATE操作?更简单地说,我如何从一个操作中生成一个POST?

    3 回复  |  直到 13 年前
        1
  •  -1
  •   thenengah    13 年前
    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 或者你想创造的任何东西。

        2
  •  4
  •   Andrew    13 年前

    你不需要做任何花哨的事。创建操作只是控制器中的一个方法。你可以像其他方法一样调用它:

    def new
       if event_only_requires_one_user_per_boat
           create
       else
          #display new form
       end
    end
    

    此外,此技术还防止用户必须发出多个请求,因为它不会使用户重定向。

        3
  •  1
  •   rbaldwin    13 年前

    相反,您可以创建一个方法来封装create操作中的大部分代码,并从create(通常使用params)和new中的特殊情况(从用户对象发送数据)调用它。