Używam rails 3.0.8, jquery-rails 1.0.10.
Chciałem sprawdzić działanie mechanizmu jquery-rails.
Po utworzeniu nowego projektu, dopisuję do Gemfile’a:
gem ‘jquery-rails’
Wywołuję:
bundle install
Następnie
rails generate jquery:install
Pliki od prototype są usuwane i zastępowane nowymi.
Następnie tworzę proste rusztowanie:
rails generate scaffold Post name:string title:string content:text
rake db:migrate
W powstałym app/views/posts/_form.html.erb zamieniam:
<%= form_for(@post) do |f| %>
na
<%= form_for(@post, :remote => true) do |f| %>
Oto akcja create w kontrolerze posts_controller
def create
@post = Post.new(params[:post])
respond_to do |format|
if @post.save
format.html { redirect_to(@post, :notice => 'Post created.') }
format.js
else
format.html { render :action => "new" }
format.js
end
end
end
Liczę, że po ustawieniu :remote => true dojdzie tutaj zapytanie w formacie js, ale w dalszym ciągu formatem jest html.
Mogę wymusić format js poprzez ustawienie:
<%= form_for(@post, :remote => true, :format => ‘js’) do |f| %>
Jednak kod pliku: app/views/create.js.erb nie jest wykonywany przez przeglądarkę, tylko w niej wyświetlany.
Gdzie popełniam błąd? O czymś zapomniałem?