2012-01-28 93 views
14

我有一个属于Car页面的Feature页面。这正是我想要的,除了一件事。Rails ActiveAdmin - 更改后更新redirect_to

创建,更新或破坏之后,我希望页面被重定向到admin_car_path(car)而不是默认admin_car_feature_path(car,feature)用于创建和更新,并admin_car_features_path(car)

我没有成功找到那个。

ActiveAdmin.register Car do 
end 

ActiveAdmin.register Feature do 
    belongs_to :car 
end 

TIA

回答

15

以下是您的案例的更新操作代码。这个代码进入到features.rb - 管理文件:

controller do 
    def update 
    update! do |format| 
     format.html { redirect_to admin_cars_path } 
    end 
    end 
end 

这重定向到汽车索引页。所以你有这个想法。创建和销毁操作相同。

+0

另一件好事关于这种方法更新:它不会覆盖验证错误当对象无效时显示在编辑页面上(因为我担心这可能是因为块没有区分是否有效)。 – 2013-02-01 17:23:35

+3

而不是'format.html {redirect_to admin_cars_path}'你可以使用通用的方法'format.html {redirect_to collection_path}' – 2013-05-23 16:07:28

+0

谢谢你们。我很抱歉迟到的确认。 – Marcelo 2013-06-26 14:19:32

0

马塞洛,我不知道我理解你的问题,但不会投入在你的控制器的updatecreatedestroy这个动作做的伎俩?

format.html { redirect_to redirect_address } 

并使redirect_address任何你需要的。

8

在当前接受的答案导致忽略验证错误。

这对我的作品与ActiveAdmin和Rails的最新版本:

controller do 

    def update 
    update! do |format| 
     format.html { redirect_to collection_path } if resource.valid? 
    end 
    end 

    def create 
    create! do |format| 
     format.html { redirect_to collection_path } if resource.valid? 
    end 
    end 

end 
+0

我得到这个错误: 我在做什么(对于主对象(NoMethodError)错误? – 2016-10-28 11:43:32

+0

对不起,该帖子是从2014年开始的,我现在还没有用过2年的红宝石。 – Anri 2016-10-31 09:17:12

31

正确的代码不跳过验证

controller do 
    def update 
    super do |success,failure| 
     success.html { redirect_to collection_path } 
    end 
    end 
end 
+0

我得到这个错误: 我正在做什么(对我有用[0]丢个板砖[0]错误? – 2016-10-28 11:43:26

+0

它应该被放置在ActiveAdmin.register ModelName中做结束块 – 2016-12-04 11:24:23