Sto seguenti il libro Pragmatic Web Development con Rails Agile 4 ° Edizione, ma sto usando Rails 3.2.2 3.0.5 invece di come raccomandato nel libro:Rails 3.2.2 non esecuzione rjs
~$ ruby -v
ruby 1.9.3p125 (2012-02-16) [i686-linux]
~$ rails -v
Rails 3.2.2
Mi sono bloccato quando includo AJAX per ridisegnare il carrello senza ricaricare la pagina. Ecco l'action create in line_items_controller.rb:
def create
@cart = current_cart
product = Product.find(params[:product_id])
@line_item = @cart.add_product(product.id)
respond_to do |format|
if @line_item.save
format.html { redirect_to(store_url) }
format.js
format.json { render json: @line_item, status: :created, location: @line_item }
else
format.html { render action: "new" }
format.json { render json: @line_item.errors, status: :unprocessable_entity }
end
end
end
Ed ecco la mia create.js.rjs di file RJS (sotto app/views/line_items):
page.alert('NO PROBLEM HERE')
page.replace_html('cart', render(@cart))
Tuttavia, quando clicco sul pulsante che avvia questa azione:
<%= button_to 'Add to Cart', line_items_path(:product_id => product), :remote => true %>
ottengo il seguente errore nel registro di sviluppo:
ActionView::MissingTemplate (Missing template line_items/create, application/create with {:locale=>[:en], :formats=>[:js, :html], :handlers=>[:erb, :builder, :coffee]}. Searched in:
* "/home/me/src_rails/depot/app/views"
):
app/controllers/line_items_controller.rb:47:in `create'
Se cambio il nome del file di create.js.rjs al create.js.erb, il problema viene risolto:
Rendered line_items/create.js.erb (0.4ms)
ma non succede nulla nella vista .... nemmeno l'avviso. Cosa mi manca? Qual è la differenza tra file.js.erb e file.js.rjs?
hey guy! Ho trovato il tuo post su google. Ho affrontato la stessa situazione. Hai trovato la soluzione? – code4j
Ho risolto il problema !!! Vedi la mia [soluzione] (http://stackoverflow.com/questions/12220816/the-ajax-request-cannot-see-the-effect-without-refresh-the-browser-in-rails/12224196#12224196). Spero che ciò possa aiutarti. – code4j