相关疑难解决方法(0)

没有路由匹配缺少必需的密钥:[:id]

我是Rails的新手,我似乎有类似的问题,但我无法解决我的问题.

我的路线:

resources :users do
    resources :items
end
Run Code Online (Sandbox Code Playgroud)

我的模特:

class Item < ActiveRecord::Base
  belongs_to :user
end

class User < ActiveRecord::Base
   has_many :items
end
Run Code Online (Sandbox Code Playgroud)

HTML:

<% @items.each do |item| %>
<tr>
  <td><%= item.id %></td>
  <td><%= item.code %></td>
  <td><%= item.name %></td>
  <td><%= item.quantity %></td>
  <td><%= link_to "Edit", edit_user_item_path(item) %></td>  <---- error
Run Code Online (Sandbox Code Playgroud)

而且我得到了同样的错误:

No route matches {:action=>"edit", :controller=>"items", 
:user_id=>#<Item id: 1, user_id: 1, code: "123", name: "test", 
quantity: 12, , created_at: "2014-02-11 15:45:30", updated_at:
"2014-02-11 15:45:30">, :id=>nil, :format=>nil} missing required keys: [:id]
Run Code Online (Sandbox Code Playgroud)

html ruby routes ruby-on-rails path

42
推荐指数
3
解决办法
6万
查看次数

ActionController :: UrlGenerationError缺少必需的键:[:id]

我是ruby的新手 - 尝试使用rails并且我已经试图做一个简单的注册表单了:

<%= form_for :user, url: user_path do |f| %>
    <p>
      <%= f.label :email %><br>
      <%= f.text_field :email %>
    </p>

    <p>
      <%= f.label :password %><br>
      <%= f.password_field :password %>
    </p>

    <p>
      <%= f.submit %>
    </p>
<% end %>
Run Code Online (Sandbox Code Playgroud)

这是一个错误:

No route matches {:action=>"show", :controller=>"user"} missing required keys: [:id]
Run Code Online (Sandbox Code Playgroud)

任何人都能解释这实际意味着什么?

编辑:

我正在关注本教程,只是将帖子更改为用户:http://guides.rubyonrails.org/getting_started.html

ruby ruby-on-rails

10
推荐指数
1
解决办法
9432
查看次数

ActionController :: UrlGenerationError:缺少必需的键:[:id]

我正在运行RSpec 3测试,并且在这个特定路径上遇到同样的错误:

 Failure/Error: visit book_path
 ActionController::UrlGenerationError:
 No route matches {:action=>"show", :controller=>"books"} missing required keys: [:id]
Run Code Online (Sandbox Code Playgroud)

我的测试还没完成,所以我确定后面的一些代码可能不正确.但我无法让我的访问路径行运行:

...
book = FactoryGirl.build(:book)
reviews = FactoryGirl.build_list(:review, 5, book: book)

visit book_path

reviews.each do |review|
  expect(page).to have_content(review.rating)
  expect(page).to have_content(review.body)
  expect(page).to have_content(review.timestamp)
end

  expect(page).to have_content('House of Leaves')
  expect(page).to have_content('Mark Z. Danielewski')
  expect(page).to have_content('Horror')
end
Run Code Online (Sandbox Code Playgroud)

在我的控制器中,我将show定义为:

def show
  @book = Book.find(params[:id])
  @reviews = @book.reviews.order('created_at DESC')
  @review = Review.new
end
Run Code Online (Sandbox Code Playgroud)

我的资源:

resources :books, only: [:index, :show, :new, :create] do
  resources :reviews, only: [:show, :new, :create] do
end
Run Code Online (Sandbox Code Playgroud)

rspec capybara rspec-rails ruby-on-rails-4 factory-bot

1
推荐指数
1
解决办法
4337
查看次数

缺少所需的密钥

Rails新秀在这里.尝试从导航栏中的图像链接到购物车显示页面.代码:

<%= link_to(image_tag("cart.png"),cart_path) %> 
Run Code Online (Sandbox Code Playgroud)

给我这个错误:

No route matches {:action=>"show", :controller=>"carts"} missing required keys: [:id]
Run Code Online (Sandbox Code Playgroud)

我的推车控制器从这开始:

def show
   begin
     @cart = Cart.find(params[:id]) 
Run Code Online (Sandbox Code Playgroud)

你向导的任何见解都会很棒.

ruby ruby-on-rails

1
推荐指数
1
解决办法
3834
查看次数