Я уверен, что этот вопрос уже задавался ранее в другом контексте, но я все еще застрял в выяснении AJAX Rails и, я думаю, Rails в целом (вроде меня заставляет задуматься, стоит ли мне просто вернуться к PHP...).Ну, в любом случае, у меня есть эта форма, которую я хочу AJAXify.
Это представление "список", которое является частью "субъектного" контроллера
<h1>Listing Subjects</h1>
<ul id="subject_list">
<% @subjects.each do |c| %>
<li><%= link_to c.name, :action => 'show', :id => c.id %></li>
<% end %>
</ul>
<p id="add_link"><%= link_to_function("Add a Subject",
"Element.remove('add_link'); Element.show('add_subject')")%></p>
<div id="add_subject" style="display:none;">
<%= form_tag(:action => 'create') do%>
Name: <%= text_field "subject", "name" %>
<%= submit_tag 'Add' %>
<% end %>
</div>
Код для моего "субъектного" контроллера
class SubjectController < ApplicationController
def list
@subjects = User.find(:all)
end
def show
@subject = User.find(params[:id])
end
def create
@subject = User.new(params[:subject])
if @subject.save
render :partial => 'subject', :object => @subject
end
end
end
Мой "субъект" частичный
<li id="subject_<%= subject.id %>">
<%= link_to subject.name, :action => 'show', :id => subject.id %>
</li>
А пользователь - это просто простая модель, которую я сделал, которая содержит два столбца "имя" и "электронная почта".
В настоящее время этот код работает так, что при нажатии «Добавить» открывается текстовое поле ввода.Когда вы вводите что-то во входные данные и отправляете это, часть "_show" отображается в ссылке на создание.Я следовал учебному пособию по Rails 2.0, но у меня есть 3.0, и я прочитал некоторые учебные пособия, и все они упоминают «: remote => true» и jquery_ujs.js, но я не знаю, как применить их к «form_tag», а не"form_for" Rails помощник.
По сути, я хочу асинхронно добавить элемент в конец списка без загрузки страницы.Я действительно пытался понять абсолютно все учебники, которые я мог найти, но я просто не могу понять это.