Вот совок: я создал тестовое приложение, которое позволяет пользователям создавать идеи, а затем добавлять «пузыри» к этим идеям. В настоящее время пузырь - это просто текст. Я успешно связывал пузыри с идеями. Кроме того, когда пользователь переходит к идее, он перечисляет все пузырьки, прикрепленные к этой идее. Пользователь может даже удалить пузырь для данной идеи.Никаких совпадений маршрутов при попытке редактирования
Моя проблема заключается в редактировании пузырьков. Когда пользователь просматривает идею, он видит содержание идеи, а также любые пузыри для этой идеи. В результате я установил все элементы управления пузырьками (редактирование и удаление) внутри представления идей «показать». Мой код для редактирования пузыря для идеи - <%= link_to 'Edit Bubble', edit_idea_bubble_path %>
. Я запустил rake routes
, чтобы найти правильный путь для редактирования пузырьков, и это то, что было указано.
Вот моя ошибка: No route matches {:action=>"edit", :controller=>"bubbles"}
В мой контроллер пузыри у меня есть:
def edit
@idea = Idea.find(params[:idea_id])
@bubble = @idea.bubbles.find(params[:id])
end
def update
@idea = Idea.find(params[:idea_id])
@bubble = @idea.bubbles.find(params[:id])
respond_to do |format|
if @bubble.update_attributes(params[:bubble])
format.html { redirect_to(@bubble,
:notice => 'Bubble was successfully updated.') }
format.xml { head :ok }
else
format.html { render :action => "Edit" }
format.xml { render :xml => @bubble.errors,
:status => :unprocessable_entity }
end
end
end
Чтобы пойти на шаг дальше, я следующий в моем routes.rb
файле
resources :ideas do
resources :bubbles
end
До сих пор все работает, за исключением тех случаев, когда я пытаюсь изменить пузырь.
Мне понравилось бы руководство.
Спасибо!
Вот мой show.html.erb
файл для идей:
<h2>Bubbles</h2>
<% @idea.bubbles.each do |bubble| %>
<p>
<b>Bubble:</b>
<%= bubble.description %>
</p>
<p>
<%= link_to 'Edit Bubble', edit_idea_bubble_path (@idea) %>
</p>
<tb />
<p>
<%= link_to 'Delete Bubble', [bubble.idea, bubble],
:confirm => 'Are you sure you want to delete this bubble?',
:method => :delete %>
</p>
<% end %>
<h2>Add a bubble:</h2>
<%= form_for([@idea, @idea.bubbles.build]) do |f| %>
<div class="field">
<%= f.label :description %><br />
<%= f.text_area :description %>
</div>
<div class="actions">
<%= f.submit %> </div><% end %>
После edit_idea_bubble_path (@idea)
, вот edit.html.erb
файл для Пузыри:
<%= render 'form' %>
<%= link_to 'Back to Ideas', ideas_path %>
И, наконец, мой _form.html.erb
файл для Пузыри: это где проблема лежит, я считаю, что
<% form_for([@idea, @idea.bubbles.build]) do |f| %>
<%= f.error_messages %>
<div class="field">
<%= f.label :description %><br />
<%= f.text_area :description %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
Спасибо, что, казалось, работать, но теперь, когда я нажимаю на «Edit Bubble» Я получаю следующее сообщение об ошибке 'Не удалось найти пузырь с ID = 5 [WHERE («пузырьки».idea_id = 5)] '. Использование '@ idea' в качестве объекта в' edit_idea_bubble_path' возвращает идеал_ид (который равен 5) и неправильно ссылается на редактирование пузырька (я не могу связать редактирование, чтобы попасть в bubble_id). Какие-либо предложения? – mmichael
Кроме того, добавление '@ idea, @ bubble' внутри' edit_idea_bubble_path' возвратило еще одну ошибку, поэтому я попытался поместить только '@ idea'. '@ пузырь' тоже не работает. – mmichael
Работали ли все-таки или нет? – khelll