0

我有两个资源TeamPlayer. Player 是我的 Team 下的嵌套资源routes.rb

对于团队,我有一个show带有show.html.erb模板的操作。在那个模板中,我有类似的东西form_for [@team, @team.players.build],所以基本上我可以从团队视图中创建一个新玩家。

现在在控制器中为错误编码渲染/重定向的最佳方法Player#create什么?在标准的创建动作中,我会呈现new带有错误的动作:

  if @player.save
    redirect_to @player, notice: 'Player was successfully created.'
  else
    render action: 'new'
  end

但现在我在另一个控制器 ( Player#create) 中,而我的表单在Team#show. 如果出错时我重定向到@team,比如成功时,我将丢失存储在实例变量中的错误信息。尝试渲染更好team/show.html.erb吗?这看起来有点乱。或者也许将 Player 的创建操作添加到 Team 控制器中?

4

1 回答 1

1

我为您看到 3 个选项:

  1. 用于flash处理错误消息。您将没有可用的实例变量,但您将呈现的任何内容都可以进入flash[:error]并在 Team#show 中使用。

  2. 使用带有 json 响应的远程请求。您根本不需要重定向,只需返回一个 json 对象,其中包含新玩家的部分内容(成功时)或错误消息(出错时)。处理远程回调中的响应以相应地更新页面。

  3. 将玩家创建逻辑移至 Team 控制器。只有当其他选项都不可行时,我才会这样做。

于 2012-11-20T16:01:25.837 回答