Загрузите удаленную форму в рельсы 3 с помощью JavaScript - PullRequest
0 голосов
/ 02 июня 2011

Я новичок в рельсах и JavaScript.Это может быть очень простой вопрос, но я все еще не могу понять это.Цель состоит в том, чтобы у меня была ссылка на кнопку, которая при нажатии должна загрузить адресную форму на той же странице.Ссылка на код:

<% = link_to "Добавить адрес", новый_адрес_путь, {: class => "кнопка"}, {: remote => true}%>

Адресный файл "address / new.html.erb":

<div id="newaddr">
  <%= render :partial => 'form', :local => @address %>
</div>

Форма "address / _form.html.erb":

<%= form_for(@address, :remote => true) do |f| %>
  <%= render 'shared/error_messages', :object => f.object %>
  <%= f.text_field :line_1 %>
  <%= f.submit %>
<% end %>

JavaScriptфайл "address / new.js.erb":

$('#newaddr').append("<%= escape_javaScript(render 'form', :local => @address) %>"); 

Новый метод в файле address_controller:

def new
  @title = "Add Address"
  @address = Address.new
  respond_to do |format|
    format.js
  end
end

Но он не работает.Есть ли что-то, чего мне здесь не хватает?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 02 июня 2011

Полученная ошибка означает, что ваша ссылка выполняется как обычная HTML-ссылка, а не как js.Ваш метод контроллера принимает только js, поэтому он возвращает 406, что недопустимо.

Наиболее очевидная причина этого заключается в том, что javascript rails.js не включен в ваш application.html.erb.Обычно достаточно добавить следующую строку:

<%= javascript_include_tag :default %>

или, если это не сработает, сделать это явно:

<%= javascript_include_tag 'jquery.min.js', 'jquery-ui.min.js', 'rails.js' %>

Надеюсь, это поможет.

0 голосов
/ 02 июня 2011

Измените файл new.js.erb:

$('#newaddr').append("#{escape_javascript(render :partial => 'form', :local => @address)}");
...