渲染另一个新表单

时间:2016-06-06 09:31:45

标签: ruby-on-rails ruby

我有两条路由,对同一资源采取新操作:individual_trainings

new_backend_trainer_ind_training GET    /backend/people/:id/trainers/:trainer_id/individual_trainings/new(.:format)         backend/individual_trainings#new

new_backend_individual_training  GET    /backend/individual_trainings/new(.:format)                                         backend/individual_trainings#new

如何指定应呈现的new类型?如果我使用render :new,请始终重定向到第二条路线。我不想使用redirect_to,因为我无法处理表单错误。知道如何做到这一点(我需要在创建动作中render :new)。也许是另一个新的创造行动?

更新: 我认为new_backend_trainer_ind_training中的simple_form存在问题:

= simple_form_for([:backend, @individual_training]) do |f|

它会生成错误的网址。是不是?

1 个答案:

答案 0 :(得分:1)

如果你想这样做(相同动作的两个路由),那么你可以将路径传递给simple_form:

= simple_form_for(@individual_training, url: new_backend_trainer_ind_training_path) do |f|

但是,这是一种使用不同路由导致相同操作的错误方法。如果这是一种不同的行为,那么您应该使用new/create动作创建另一个控制器。