ruby-on-rails - multiple - rails link_to controller action
rails 3-link_to para destruir no funciona (9)
- siga los pasos en la instalación parte rails/jquery-ujs
- agregue la aplicación <% = javascript_include_tag "%> en su archivo de diseño.
Intento crear un enlace de destrucción para el controlador de mis usuarios, también estoy usando el dispositivo.
Aquí está mi código:
Ver
<%= link_to ''Delete User?'', child, :confirm => "Are you sure you want to delete #{child.full_name}?", :method => :delete, :class => "user-additional", :style => "font-size:12px;font-weight:normal;" %>
Controlador
def destroy
if @user = User.find(params[:id])
@user.destroy
respond_to do |format|
format.html { redirect_to account_index_path }
format.xml { head :ok }
end
end
end
Rutas
devise_for :users
resources :users, :except => [:new]
El enlace se traduce a localhost: 3000 / users / 10
Al hacer clic se abre, los usuarios muestran en lugar de eliminarlos
Algunas ideas ?
Además, si obtiene este problema en modo de producción, puede deberse a que no ha compilado los activos. Ver http://guides.rubyonrails.org/asset_pipeline.html#precompiling-assets
En caso de que esté utilizando jQuery en lugar de Prototype, es probable que le falte un archivo javascript.
Puede encontrar detalles sobre cómo agregarlo a su proyecto desde la página jquery-ujs GitHub o desde el episodio 205 de Railscasts.
En realidad acabo de tener exactamente el mismo problema ayer
Prueba esto:
<%= button_to "delete", your_object, :method=>:delete, :class=>:destroy %>
Funciona (al menos para mí)
Funcionó para mí con un mensaje de confirmación.
<%= button_to ''Destroy'', {action: :destroy, id: version.id}, onclick: ''return confirm("Are you sure?")'', method: :delete %>
Las acciones destructivas se deben realizar como una presentación del formulario: http://www.w3.org/2001/tag/doc/whenToUseGet.html#checklist
use button_to
(pasando a :method => :delete
) en su lugar y button_to
el estilo al botón apropiadamente.
Si está utilizando jQuery, asegúrese de tener algo como esto:
<script type="text/javascript">
// this allows jquery to be called along with scriptaculous and YUI without any conflicts
// the only difference is all jquery functions should be called with $j instead of $
// e.g. $jQ(''#div_id'').stuff instead of $(''#div_id'').stuff
var $jQ = jQuery.noConflict();
</script>
Si no ha incluido jquery y jquery-ujs en su aplicación, ¡el enlace por defecto predeterminado con andamio no funcionará!
Tuve el mismo problema. ¡Se resolvió después de incluir estos dos js!
Supongo que es porque en Rails 3, javascript discreto ahora se utiliza para una funcionalidad como esta (Rails 2 generaría un montón de desagradable javascript en línea para su código, Rails 3 coloca el javascript en un archivo externo y usa HTML5 data-
atributos para interactuar con eso.)
Para resolver esto, debe incluir <%= csrf_meta_tags %>
en el encabezado de su página para hacer referencia al javascript externo. También se ocupa de los problemas de XSS.
Algunos detalles aquí: Eliminar enlace envía "Obtener" en lugar de "Eliminar" en la vista de Rails 3