Мне удалось запутаться в действительно глупой ситуации, используя AJAX и jQuery в Rails 4. Я использую вложенные атрибуты и в настоящее время пытаюсь выполнить действие создания через AJAX.
Со следующей настройкой я могу создать новую идею через AJAX, но она отображает идею в каждом проекте. Когда я перезагружаю страницу, она правильно отображает только данную идею для каждого проекта, но представление AJAX сначала неверно.
Вот мои проекты index.html.erb:
<% @projects.each do |project| %>
<p><%= project.name %></p>
<ul class="postis">
<%= render partial: "idea", collection: project.ideas %>
</ul>
<%= form_for([project, project.ideas.build], remote: true) do |f| %>
<p><%= f.text_area :description %></p>
<p><%= button_tag '', :class => 'glyphicon glyphicon-ok' %></p>
<% end %>
<% end %>
_idea.html.erb partial в папке просмотра проектов:
<li><%= idea.description %></li>
У меня также есть партиал _silly.html.erb в папке просмотра идей:
<li><%= @idea.description %></li>
idea_controller.rb
def create
@idea = @project.ideas.new(idea_params)
respond_to do |format|
if @idea.save
format.html {redirect_to root_path}
format.js
else
render.html {render :new}
render.js
end
end
end
Маршруты.рб
resources :projects do
resources :ideas
end
Вот мой Create.js.erb.
$('.postis').append("<%= j render("silly") %>")
$(":input:not(input[type=submit])").val("");
Мой индекс project_controller.rb:
def index
@projects = Project.all
end
Я попробовал некоторые варианты, например, если я попытаюсь частично отобразить идею в своем Create.js.erb, например:
$('.postis').append("<%= j render("projects/idea") %>")
$(":input:not(input[type=submit])").val("");
Я получаю сообщение об ошибке: "ActionView::Template::Error (неопределенная локальная переменная или метод "идея""
Как я могу избавиться от другого частичного и заставить действие создания работать с AJAX?
'projects/idea'
? - person Amit Sharma   schedule 19.01.2015