w3schools property img attribute javascript ruby-on-rails ruby ajax httprequest

javascript - property - POST 422(Entidad no procesable) en Rails? ¿Debido a las rutas o al controlador?



title label html (2)

¡Lo tengo funcionando!

Agregué un ...

skip_before_action :verify_authenticity_token

al controlador.

El problema se encontró al revisar los registros y al ver que el token CSRF no se pudo verificar.

Estoy tratando de dar a los usuarios en mi sitio web "puntos" o "créditos" por tuitear acerca de la marca.

Tengo el widget de Twitter de lujo en la vista apropiada ...

<p><a href="https://twitter.com/share" class="twitter-share-button" data-text="Check Out This Awesome Website Yay" data-via="BrandName" data-hashtags="ProductName">Tweet</a> <div id="credited"></div> <script>window.twttr = (function (d, s, id) { var t, js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) return; js = d.createElement(s); js.id = id; js.src= "https://platform.twitter.com/widgets.js"; fjs.parentNode.insertBefore(js, fjs); return window.twttr || (t = { _e: [], ready: function (f) { t._e.push(f) } }); }(document, "script", "twitter-wjs")); </script>

Tengo el JS todo escrito y bonito ....

function creditTweet() { $.post( "/credit_tweet", {}, function(result) { var text; if (result.status === "noop") { text = "Thanks for sharing already!"; } else if (result.status === "ok") { text = "5 Kredit Added"; } $("#credited").html(text); } ); } $(function() { twttr.ready(function (twttr) { window.twttr.events.bind(''tweet'', creditTweet); }); });

Ahora el problema está en el controlador O en las rutas (donde estoy publicando). Creo que las rutas están bien porque la POST está casi funcionando, porque esta es la descripción del error en wikipedia - "422 Entidad no procesable (WebDAV; RFC 4918) La solicitud estaba bien formada pero no se pudo seguir debido a errores semánticos . "

Entonces, ¿ven algo malo con mi código ruby ​​en el controlador?

class SocialKreditController < ApplicationController TWEET_CREDIT_AMOUNT = 5 def credit_tweet if !signed_in? render json: { status: :error } elsif current_user.tweet_credited Rails.logger.info "Not crediting #{ current_user.id }" render json: { status: :noop } else Rails.logger.info "Crediting #{ current_user.id }" current_user.update_attributes tweet_credited: true current_user.add_points TWEET_CREDIT_AMOUNT render json: { status: :ok } end end end

Y en mi route.rb, es bastante sencillo, así que dudo que haya algo malo aquí ...

get ''social_kredit/credit_tweet'' post ''/credit_tweet'' => ''social_kredit#credit_tweet''

¿Dónde oh dónde está este error? Claramente no sé nada acerca de las solicitudes HTTP.


Mismo problema que enfrenté. Se resuelve después de agregar

skip_before_action: verify_authenticity_token

en la parte superior de su controlador, donde su JS está llamando o enviando datos.

class UserController < ApplicationController skip_before_action :verify_authenticity_token def create end end

como se muestra en el fragmento de código.