2011-02-06 12 views
0

ここにスクープがあります:ユーザーがアイデアを作成し、これらのアイデアに「バブル」を追加できるテストアプリを作成しました。現在、バブルは単なるテキストです。私は泡をアイデアに結び付けました。さらに、ユーザーがアイデアを見るために行くと、アイデアに付けられたすべての気泡がリストされます。ユーザーは、特定のアイデアのためにバブルを削除することもできます。編集しようとすると経路が一致しません

私の問題は気泡の編集にあります。ユーザーがアイデアを見ると、そのアイデアのアイデアの内容と気泡が見えます。その結果、アイデアの「表示」ビュー内にあるすべてのバブルコントロール(編集と削除)を設定しました。アイデアのバブルを編集するコードは<%= 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ファイルです:

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

そして最後に、バブルのための私の_form.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ファイルがあります嘘、私は信じています

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

答えて

0
あなたはアイデアとバブルオブジェクトを提供する必要が

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

更新:

編集_form.html.erbファイル

<% form_for([@idea, @bubble]) do |f| %> 
+0

おかげで、 '。 '@ idea'を' edit_idea_bubble_path'のオブジェクトとして使用すると、idea_id(5)が返され、バブルの編集に正しくリンクされません(私はeditをリンクしてbubble_idに当てはめることができません)。助言がありますか? – mmichael

+0

また、 '@ idea、@ bubble'を' edit_idea_bubble_path'の中に入れても別のエラーが返ってきたので、 '@ idea'を入れてみました。 '@ bubble'もうまくいかなかった。 – mmichael

+0

やったかしないか? – khelll

1

まずあなたのショーでルートを構築.html.erbファイル

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

アクションがあなたの_form.htmlで

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

を編集しているときにアクションが

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

新しいときコントローラは@ideaと@bubble

の両方のための2つのオブジェクトを持つ必要があります。動作するように見えたが、私は「編集バブル」をクリックすると、今、私は `次のエラーを取得すると、[(.idea_id = 5「泡」)] ID = 5でバブルが見つかりませんでしたERB

<% form_for([@idea, @bubble]) do |f| %> 
関連する問題