Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/63.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 卡在理解链接上_Ruby On Rails_Ruby On Rails 3 - Fatal编程技术网

Ruby on rails 卡在理解链接上

Ruby on rails 卡在理解链接上,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,我真的很难理解如何通过循环将_链接到父对象 我的里程碑属于我的订单,我的订单有很多里程碑 <%= calendar_for @milestones, :year => @date.year, :month => @date.month do |t| %> <%#= calendar_for(@orders, :year => 2009, :month => 1) do |t| %> <%= t.head('Sunday',

我真的很难理解如何通过循环将_链接到父对象

我的里程碑属于我的订单,我的订单有很多里程碑

<%= calendar_for @milestones, :year => @date.year, :month => @date.month do |t| %>
  <%#= calendar_for(@orders, :year => 2009, :month => 1) do |t| %>    
    <%= t.head('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday') %>
        <%= t.day(:day_method => :milestone_due) do |date, orders| %>
          <%= date.day %>
         <ul>
                <% for milestone in orders %>
                 <li><%= link_to milestone.name, order_path  %> </li> 
                <% end %>
         </ul>
        <% end %>
      <% end %>
在我的订单索引中,我有一个简单的日历(table_builder),其中列出了我的所有里程碑

<%= calendar_for @milestones, :year => @date.year, :month => @date.month do |t| %>
  <%#= calendar_for(@orders, :year => 2009, :month => 1) do |t| %>    
    <%= t.head('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday') %>
        <%= t.day(:day_method => :milestone_due) do |date, orders| %>
          <%= date.day %>
         <ul>
                <% for milestone in orders %>
                 <li><%= link_to milestone.name, order_path  %> </li> 
                <% end %>
         </ul>
        <% end %>
      <% end %>
但也就是说,它找不到没有id的订单


很明显,我这里缺少了一些非常基本的东西。

您需要告诉
订单路径
要链接回的
订单

<%= link_to milestone.name, order_path(milestone.order) %>

您也可以将其缩短为:

<%= link_to milestone.name, milestone.order %>

更新

如果您的某些里程碑可能没有订单,您可以尝试以下方式:

<% if milestone.order %>
  <%= link_to milestone.name, order_path(milestone.order) %>
<% else %>
  <%= milestone.name %>
<% end %>

听起来您没有为订单设置路线

routes.rb
文件中

resources :orders
或者,如果您这样做,您就不会为订单传递
id

link_to "link text", order_url(:id => @order)
link_to "link text", order_url(@order) # <== shortened
链接到“链接文本”,订单url(:id=>@order)
链接到“链接文本”,订购url(@order)#请在您的帖子中。您的帖子结尾是
谢谢,Jenny
或类似的内容。这是没有必要的;每个问题/答案下面都有您的用户名,并有一个指向您个人资料的链接。哎呀:)对不起!我没意识到,谢谢你让我再次知道hi@dmarkow谢谢你的快速回复。当我尝试第一种方法时,结果是:没有路由匹配{:action=>“show”,:controller=>“orders”}?为什么这对我来说这么难;)!??!我将您的第一行更改为orders\u路径,没有收到任何错误,但它仍然重定向到localhost:3000/orders,而不是show order路径。感谢您至少有一个里程碑没有关联的订单(因此传递的是
order\u path
而不是实际订单,即它正在尝试匹配没有id的路线)。请参阅我的更新答案。您好,这很有意义。我试过了,但现在它链接到/orders.1,这不太正确。@Jenny确保您使用的是
order\u path
,而不是
orders\u path
(复数)Hi@natedavisolds我的路线已经设置好了:资源:订单做资源:评论,:技术,:里程碑结束将立即尝试您的建议第二次更新为我提供了正确的订单id,但是路径中有一个点,而不是a/Hmmm。。。我以为这是一段感情。也许我误解了。我希望这对你有帮助。
<% orders.each do |order| %>
    <li><%= link_to milestone.name, order_path(order)  %> </li> 
<% end %>
<%= t.day(:day_method => :milestone_due) do |date, milestones| %>
    <%= date.day %>
     <ul>
            <% for milestone in milestones %>
             <li><%= link_to milestone.name, order_path(:id => milestone.order_id)  %> </li> 
            <% end %>
     </ul>
    <% end %>