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