ruby-on-rails - 当 Controller 方法存在、路由已定义且 View 调用它时,为什么我会收到路由错误?

标签 ruby-on-rails ruby ruby-on-rails-3 routes

我有一个简单的购物车应用程序,它在应用程序布局的侧边栏上显示带有 line_items 的 session 购物车。我试图在每个订单项的末尾添加一个按钮(在 _line_item.html.erb 中呈现),使用 remote: true 和一些 JS 将购物车中的数量减少一个。但是,当我加载页面时(在我单击任何内容之前),我在开发中收到来自 Rails 3.1 的路由错误,没有安装特殊的 gem 或配置:

   Routing Error

    No route matches {:action=>"decrement", :controller=>"line_items"}

这是我在 controllers/line_items_controller.rb 中的方法,到目前为止它对我来说一直运行良好:

  def decrement
    @line_item = LineItem.find(params[:id])
    @line_item.quantity -= 1
    if @line_item.quantity.empty?
      @line_item.destroy
    end 

    respond_to do |format|
      format.js {@current_item = @line_item}
    end
  end

这是 routes.rb 中的条目:

  resources :line_items do
    member do
      post 'decrement'
    end
  end

这是部分 _line_item.html.erb 中的代码,没有 button_to 链接也能正常工作:

<% if line_item == @current_item %>
<tr id="current_item">
<% else %>
<tr>
<% end %>
    <td><%= line_item.quantity %>&times;</td>
    <td><%= line_item.product.title %></td>
    <td class="item_price"><%= number_to_currency(line_item.total_price) %></td>
    <td><%= button_to 'Remove one', line_item, decrement_line_item_path, remote: true %></td>
</tr>

我一定是遗漏了什么,但我找不到了。似乎一切都是为了我。我究竟做错了什么?非常感谢。

编辑:这是我在使用 decrement_line_item_path(line_item) 时收到的错误:

ArgumentError in Store#index

Showing /Users/Michael/Sites/rails/depot/app/views/line_items/_line_item.html.erb where line #9 raised:

wrong number of arguments (4 for 3)
Extracted source (around line #9):

6:  <td><%= line_item.quantity %>&times;</td>
7:  <td><%= line_item.product.title %></td>
8:  <td class="item_price"><%= number_to_currency(line_item.total_price) %></td>
9:  <td><%= button_to 'Remove one', line_item, decrement_line_item_path(line_item), remote: true %></td>
10: </tr>

最佳答案

decrement_line_item_path 需要单个项目的参数,但您没有给它一个参数。

尝试:

<%= button_to 'Remove one', decrement_line_item_path(line_item), remote: true %>

关于ruby-on-rails - 当 Controller 方法存在、路由已定义且 View 调用它时,为什么我会收到路由错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7700984/

相关文章:

ruby-on-rails - 正则表达式挑战

ruby - 在随后的 bundle 安装中跳过 native 扩展重新编译

javascript_include_tag :application loads javascripts twice in development environment

sql - Rails项目中的db/development_structure.sql是什么?

ruby-on-rails - Heroku "at=error code=H10 desc="应用程序崩溃“method=GET path=/favicon.ico”

ruby - 我如何使用 ruby​​ 驱动程序知道我在 MongoDB 中的文档大小

ruby-on-rails - 通过Rails 3.2将Elasticsearch与acts_as_paranoid gem集成

mysql - 按数据库计算的内容分组

ruby-on-rails - 如何在 Ruby on Rails 中下载 CSV 文件?

ruby-on-rails - 部署到 Heroku 的问题