При попытке изменить маршрут не соответствует - PullRequest
0 голосов
/ 07 февраля 2011

Вот совок: я создал тестовое приложение, которое позволяет пользователям создавать идеи, а затем добавлять «пузыри» к этим идеям.В настоящее время пузырь - это просто текст.Я успешно связал пузыри с идеями.Кроме того, когда пользователь просматривает идею, он перечисляет все пузырьки, связанные с этой идеей.Пользователь может даже удалить пузырь для данной идеи.

Моя проблема заключается в редактировании пузырьков.Когда пользователь просматривает идею, он видит содержание идеи, а также пузырьки для этой идеи.В результате я установил все свои элементы управления пузырями (редактирование и удаление) в представлении "показать" идеи.Мой код для редактирования пузыря для идеи - <%= 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 есть следующееfile

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 для Bubbles:

<%= render 'form' %>
<%= link_to 'Back to Ideas', ideas_path %>

И, наконец, мой _form.html.erb файл для Bubbles: вот в чем проблема, я полагаю

<% 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 %>

Ответы [ 2 ]

1 голос
/ 01 января 2013

Сначала создайте маршрут в вашем файле show.html.erb

<%= link_to 'Edit Bubble', edit_idea_bubble_path(@idea, bubble) %>

Затем ваш контроллер должен иметь 2 объекта для @idea и @ bubble

, когда действие новое

@idea = Idea.find_by_id(:params[:idea_id])
@bubble = @idea.bubbles.build

при редактировании действия

@idea = Idea.find_by_id(:params[:idea_id])
@bubble = @idea.bubbles.find_by_id(:params[:bubble_id])

В вашем _form.html.erb

<% form_for([@idea, @bubble]) do |f| %>
0 голосов
/ 07 февраля 2011

Необходимо указать идею и пузырьковые объекты:

<%= link_to 'Edit Bubble', edit_idea_bubble_path(@idea,@bubble) %>

Обновление:

Редактировать файл _form.html.erb

<% form_for([@idea, @bubble]) do |f| %> 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...