Ruby on rails 尝试编辑时没有路由匹配
独家报道:我创建了一个测试应用程序,允许用户创建想法,然后在这些想法中添加“气泡”。目前,气泡只是文本。我成功地将泡沫与想法联系起来。此外,当用户去查看一个想法时,它会列出与该想法相关的所有气泡。用户甚至可以删除给定想法的气泡 我的问题在于编辑气泡。当用户查看一个想法时,他会看到该想法的内容以及该想法的任何气泡。因此,我在ideas“show”视图中设置了所有气泡控件(编辑和删除)。我为创意编辑气泡的代码是Ruby on rails 尝试编辑时没有路由匹配,ruby-on-rails,ruby,ruby-on-rails-3,forms,routes,Ruby On Rails,Ruby,Ruby On Rails 3,Forms,Routes,独家报道:我创建了一个测试应用程序,允许用户创建想法,然后在这些想法中添加“气泡”。目前,气泡只是文本。我成功地将泡沫与想法联系起来。此外,当用户去查看一个想法时,它会列出与该想法相关的所有气泡。用户甚至可以删除给定想法的气泡 我的问题在于编辑气泡。当用户查看一个想法时,他会看到该想法的内容以及该想法的任何气泡。因此,我在ideas“show”视图中设置了所有气泡控件(编辑和删除)。我为创意编辑气泡的代码是。我运行了rake routes,以找到编辑气泡的正确路径,这就是所列出的 这是我的错误:
。我运行了rake routes
,以找到编辑气泡的正确路径,这就是所列出的
这是我的错误:没有路由匹配{: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 %>
最后,我的\u 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 %>
您必须提供创意和气泡对象:
<%= link_to 'Edit Bubble', edit_idea_bubble_path(@idea,@bubble) %>
更新:
编辑_form.html.erb文件
<% form_for([@idea, @bubble]) do |f| %>
首先在show.html.erb文件中构建路线
<%= link_to 'Edit Bubble', edit_idea_bubble_path(@idea, bubble) %>
当操作被编辑时
@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| %>
谢谢,这似乎有效,但现在当我单击“编辑气泡”时,我得到以下错误找不到ID=5的气泡[其中(“气泡”.idea\u ID=5)]
。使用@idea
作为edit\u idea\u bubble\u path
中的对象返回idea\u id(为5),并且没有正确链接到编辑bubble(我似乎无法链接编辑以命中bubble\u id)。有什么建议吗?另外,将@idea,@bubble
放在编辑\u idea\u bubble\u路径中
返回了另一个错误,所以我尝试只放@idea
@bubble
也不起作用。它起作用了,但它给我带来了另一个问题。现在,当我单击编辑气泡时,它会将我带到创建新气泡的窗体。当我调用edit\u idea\u bubble\u path(@idea)
时,它不使用bubbles id。请使用您用来编辑bubble的表单标签更新上面的问题。感谢您的尝试,但它仍然不起作用。当您单击编辑气泡时,它只会显示用于创建气泡的表单。编辑链接不能捕捉气泡id。
@idea = Idea.find_by_id(:params[:idea_id])
@bubble = @idea.bubbles.find_by_id(:params[:bubble_id])
<% form_for([@idea, @bubble]) do |f| %>