Ruby on rails 尝试使用相同视图进行更新和创建流时出现路由错误(Rails 3)

Ruby on rails 尝试使用相同视图进行更新和创建流时出现路由错误(Rails 3),ruby-on-rails,paperclip,Ruby On Rails,Paperclip,我的总体用例: 我有一个列表模型,它有许多图像。列表详细信息页面列出了可以内联(通过ajax)更新的所有字段 我希望能够对更新列表和创建新列表使用相同的视图 我的列表控制器如下所示: def detail @listing = Listing.find(params[:id]) @image = Image.new #should this link somewhere else? respond_to do |format| form

我的总体用例:

我有一个列表模型,它有许多图像。列表详细信息页面列出了可以内联(通过ajax)更新的所有字段

我希望能够对更新列表创建新列表使用相同的视图

我的列表控制器如下所示:

 def detail 
     @listing = Listing.find(params[:id])  
     @image = Image.new #should this link somewhere else?

     respond_to do |format| 
         format.html # show.html.erb  
         format.xml { render :xml => @listing } 
      end 
 end 


  def create
      # create a new listing and save it immediately. Assign it to guest, with a status of "draft"
      @listing = Listing.new(:price_id => 1)  # Default price id
      # save it to db
      # TODO add validation that it has to have a price ID, on record creation. So the view doesn't break.
      @listing.save
      @image = Image.new

      # redirect_to "/listings/detail/@listing.id" #this didn't work

      respond_to do |format| 
          format.html # show.html.erb  
          format.xml { render :xml => @listing } 
      end
 end 

问题
我使用的是一个局部视图,它为创建视图和局部视图显示了相同的表单

除了一件事外,这一切都非常有效: 当我停车时
,它工作得很好

当我停车时
,我得到以下错误:

显示/Applications/MAMP/htdocs/rails_testing/feedbackd/app/views/listings/_edit_form.html.erb,其中第100行出现:

没有路由匹配{:action=>“show”,:controller=>“images”} 提取的源(第100行附近):

97:
98: 
99: 
100:image|u path,:html=>{:multipart=>true}do | f |%>
101:
102: 103:
我认为问题在于:
当我上传一个新图像(我使用的是回形针)时,它需要列表id来创建图像记录。由于列表id未随listings/new一起传入,因此无法找到列表id。如何传入id?通过重定向?解决这个问题的最好办法是什么?谢谢。

问题似乎是您试图提交到一个不存在的URL。如果您使用这样的表单:

<%= form_for @image, :html => { :multipart => true } do |f| %> {:multipart=>true}do | f |%> 然后在routes.rb文件中,您应该有:

resources :images 资源:图像
您应该有一个定义了创建操作的ImagesController。提交此表单时,将调用ImagesController#创建操作。

问题在ur routes.rb文件中。你没有定义路径,这就是为什么它会给出这个错误。这可能对你有帮助


谢谢你,你的评论都很有帮助

我就是这样解决的:

我为images/new添加了一条路径,指向imageController->Create

<%= form_for @image, :url => "/images/new/#{@listing.id}" , :html => { :multipart => true } do |f| %>
<%= f.text_field :description %><br />
<%= f.file_field :photo %>
<%= submit_tag "Upload" %>
“/images/new/#{@listing.id}”,html=>{:multipart=>true}do | f |%>


你确定你的routes.rb文件正确吗?你是建议我修复我的路由,还是要提交到的URL的核心内容?:URL=>图像路径在表单中没有用处declaration@apneadiving如果已经有图像,那么图像路径有用吗?我已经有了这样定义的资源。当我删除:url=>“…”时,它对我来说非常有用,但对我来说失败了。为了解决这个问题,我在下面的答案中硬编码了它+如果路由定义为“resources:images”,则不必指定URL,因为RAILS可以确定新的图像类应该发布到正确的URL。也就是说,如果要指定路由,应该使用“images\u path”而不是“images\u path”,因为您要发布到/images。虽然您的注释有意义,但路径已定义+1.
<%= form_for @image, :url => "/images/new/#{@listing.id}" , :html => { :multipart => true } do |f| %>
<%= f.text_field :description %><br />
<%= f.file_field :photo %>
<%= submit_tag "Upload" %>