Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 无法获取添加的方法并将_链接到工作(轨道3)_Ruby On Rails_Methods_Path_Routes_Link To - Fatal编程技术网

Ruby on rails 无法获取添加的方法并将_链接到工作(轨道3)

Ruby on rails 无法获取添加的方法并将_链接到工作(轨道3),ruby-on-rails,methods,path,routes,link-to,Ruby On Rails,Methods,Path,Routes,Link To,看到了一些参考资料,但它的旧Rails 2解决方案。在理解Rails 3的一些术语方面有足够的困难 我在控制器中添加了一个方法“dndl”。 我在索引中添加了指向的链接。 我一次又一次地试着设置路线 Controller: def dnld blah blah end 索引: <td><%= link_to 'Show', stock %></td> <td><%= link_to 'Edit', edit_stock_path(sto

看到了一些参考资料,但它的旧Rails 2解决方案。在理解Rails 3的一些术语方面有足够的困难

我在控制器中添加了一个方法“dndl”。 我在索引中添加了指向的链接。 我一次又一次地试着设置路线

Controller:
def dnld
  blah blah
end
索引:

<td><%= link_to 'Show', stock %></td>
<td><%= link_to 'Edit', edit_stock_path(stock) %></td>
<td><%= link_to 'Dnld', dnld, {:action => 'dnld'} %></td>
<td><%= link_to 'Destroy', stock, :confirm => 'Are you sure?', :method => :delete %>
我试过:

    <td><%= link_to 'Dnld', stock, {:action => 'dnld'} %></td>
# End up on the stock show page with dnld not executed to my knowledge

    <td><%= link_to 'Dnld', , {:action => 'dnld'} %></td>
# Produces an error

    <td><%= link_to 'Dnld', dnld_stock_path(stock), {:action => 'dnld'} %></td>
# It doesn't know what dnld_stock_path is, yet I don't understand why it DOES know what edit_stock_path is and cannot find documentation to explain this.
'dnld'}%>
#据我所知,最终出现在股票展示页面,dnld未执行
'dnld'}%>
#产生错误
'dnld'}%>
#它不知道什么是dnld_stock_路径,但我不明白为什么它知道什么是edit_stock_路径,并且找不到解释这一点的文档。
谢谢你的帮助

试试看

 resources :stocks do
    collection do
        put :dnld, :as => dnld
    end
  end
然后


如果您在routes.rb中提供收藏,例如:

  resources :stocks do
    collection do
        put 'dnld'
    end
  end
  resources :stocks do
    member do
        put 'dnld'
    end
  end
然后命名的路径将是“dnld\u stocks\u path”。您不需要指定操作

<td><%= link_to 'Dnld', dnld_stocks_path %></td>
然后,命名路径将为“dnld_stock_path(stock)”



更多信息

我还需要上面kishi的答案。我用了会员电话。但是我认为:as=>dnld在上面的kishi中是必要的。在指向的链接中,我使用了:这使得URL*/stocks/2/dnld成为我所需要的。从“放”到“得到”的转变也治愈了我。我不完全明白为什么(noob),但我正在得到我想要的结果。别忘了tor“rake routes”。谢谢Kishi。给低于分数的家伙增加分数,但如果没有你的:as=>dnld片段,我就做不到。
  resources :stocks do
    member do
        put 'dnld'
    end
  end
<td><%= link_to 'Dnld', dnld_stock_path(stock) %></td>