rails example and jquery ajax ruby-on-rails-3 ujs

jquery - example - ruby and rails documentation



Botón simple como desear/diferente con rieles 3, jquery y ajax (2)

Básicamente, para hacer que tus enlaces funcionen a través de AJAX, solo necesitas proporcionar link_to con :remote => true argumento. Pero supongo que quieres hacer algún tipo de comentario al usuario. Eche un vistazo a este screencast.

Tengo un producto, usuario y modelo similar. Un usuario puede gustarle un producto. Estoy tratando de implementar un botón similar simple que, al hacer clic, permite que un usuario le guste un producto. Luego, el botón Me gusta se transforma en un botón diferente que permite al usuario diferenciarse de un producto. Muy claro.

Implementé la lógica de modelo / controlador para lo anterior. No soy muy bueno con javascript / ajax y me preguntaba cuál sería la mejor manera de implementar la funcionalidad anterior. Quiero que las acciones like / unlike sean manejadas a través de ajax. Estoy usando rails 3 y jquery ujs para mi aplicación.

Gracias.


Mi respuesta a su pregunta es larga, así que escribí una aplicación de ejemplo . Aquí hay un fragmento:

Hay muchas maneras de despellejar a este gato, pero me gusta crear una plantilla de ujs parcial y única.

_like_button.html.erb :

<% if like = current_user.likes.find_by_product_id(@product.id) %> <%= form_for like, :html => { :method => :delete }, :remote => true do |f| %> <%= f.submit "Unlike" %> <% end %> <% else %> <%= form_for current_user.likes.build(:product_id => @product.id), :remote => true do |f| %> <%= f.hidden_field :product_id %> <%= f.hidden_field :user_id %> <%= f.submit "Like" %> <% end %> <% end %>

toggle.js.erb , donde "#like" es el div que encierra el formulario:

$("#like").html("<%= escape_javascript render(''like_button'') %>");