我有一个属于Car页面的Feature页面。除了一件事,这正是我想要的。
创建,更新或销毁后,我希望将网页重定向到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
答案 0 :(得分:37)
正确的更新代码,无需跳过验证
controller do
def update
super do |success,failure|
success.html { redirect_to collection_path }
end
end
end
答案 1 :(得分:22)
以下是针对您的案例的更新操作的代码。此代码转到features.rb - admin文件:
controller do
def update
update! do |format|
format.html { redirect_to admin_cars_path }
end
end
end
这会重定向到汽车索引页面。所以你有这个想法。对于创建和销毁操作也是如此。
答案 2 :(得分:9)
目前,接受的答案会导致忽略验证错误。
这适用于最新版本的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
答案 3 :(得分:0)
Marcelo,我不确定我是否理解您的问题,但是不会将其放入控制器中的update
,create
和destroy
操作中吗?
format.html { redirect_to redirect_address }
并根据需要制作redirect_address
。
答案 4 :(得分:0)
当前答案是跳过验证。其他一些答案有效,但部分正确(错误使用super
或手动验证资源)。
在创建和udpate之后,使用AA重定向的最新更新的“正确”方法:
controller do
def create
create! do |success,failure|
success.html { redirect_to collection_path, notice: "#{resource.model_name.human} was successfully created." }
end
end
def update
update! do |success,failure|
success.html { redirect_to collection_path, notice: "#{resource.model_name.human} was successfully updated." }
end
end
end
答案 5 :(得分:0)
这是一个也可以与create_another
一起使用的解决方案,使用parent
和child
作为模型名称。
此解决方案假定您将孩子显示为父母的一部分(例如,通过table_for
),因此您不需要孩子的index
方法。
在资源覆盖控制器的smart_resource_url
和index
方法中:
controller do
def smart_resource_url
if create_another?
new_resource_url(create_another: params[:create_another])
else
parent_path(params[:parent_id])
end
end
def index
redirect_to parent_path(params[:parent_id])
end
end