Desidero nascondere il percorso di modifica se l'oggetto da modificare ha un determinato stato.Elementi azione ActiveAdmin in base allo stato dei dati
Come posso farlo?
Desidero nascondere il percorso di modifica se l'oggetto da modificare ha un determinato stato.Elementi azione ActiveAdmin in base allo stato dei dati
Come posso farlo?
È possibile creare un before_filter
nel controller che si applica solo all'azione di modifica. Potrebbe controllare lo stato e consentire l'esecuzione o redirect_to
a seconda del ritorno del metodo.
Qualcosa di simile nel controller applicazioni:
def some_method
if foo.bar == true
redirect_to foos_path
end
end
Poi all'inizio del controller della domanda
before_filter :some_method, :only => :edit
se u vuole nascondere il link "modifica" (nelle viste active_admin) per oggetto se l'oggetto contiene un valore specifico, è possibile sovrascrivere la vista predefinita per il metodo e aggiungere la condizione prima che venga visualizzato il collegamento.
Se si sta parlando di nascondere il link di modifica che viene mostrato di default (insieme con la vista ed eliminare collegamenti) nell'azione index, è possibile personalizzare la vista indice come segue:
ActiveAdmin.register Model do
index do
column :actions do |object|
raw(%(#{link_to "View", [:admin, object]}
#{link_to "Delete", [:admin, object], method: :delete}
#{(link_to"Edit", [:edit, :admin, object]) if object.status? }))
end
end
end
Perché il il contenuto della colonna sarà solo quello che viene restituito dal blocco column
, è necessario restituire tutti i tre (o due) collegamenti contemporaneamente come stringa. Qui viene utilizzato raw
in modo che vengano visualizzati i collegamenti effettivi e non l'html per i collegamenti.
Grazie per la tua risposta! Sarà fantastico, se è possibile aggiungere prompt per eliminare. –
Finalmente l'ho fatto. Avevo bisogno di due cose:
Reindirizzare quando si accede direttamente e nascondere i pulsanti alla pagina di modifica.
Per reindirizzare quando l'utente tenta di accedere direttamente alla pagina di modifica Io uso un before_filter:
before_filter :some_method, :only => [:edit, :update]
def some_method
redirect_to action: :show if status == something
end
Per nascondere i pulsanti lo faccio in questo modo:
ActiveAdmin.register Model do
config.clear_action_items!
action_item :only => [:show] , :if => proc { instance.status == something } do
link_to 'Edit', edit_model_path(instance)
end
end
'instance' dovrebbe essere' model' (nome del modello in snake_case). – ypresto
Questo può essere realizzare utilizzando il seguente:
ActiveAdmin.register Object do
index do
column :name
actions defaults: true do |object|
link_to 'Archive', archive_admin_post_path(post) if object.status?
end
end
end
noti che usare defaults: true
aggiungerà il tuo cus azione tom per azioni predefinite di amministrazione attiva.
Questo è un passaggio ma voglio nascondere anche il link da modificare (nel tuo esempio). –
Ho cambiato lo spettacolo da modificare. Fondamentalmente, questo verrà reindirizzato quando qualcosa raggiunge il percorso di modifica a meno che la condizione non soddisfi le aspettative. Penso che questo sia quello che stai cercando di fare. In caso contrario, fornire ulteriori dettagli in modo da poter rispondere meglio. – jameswilliamiii