我是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) 我是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
我正在运行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) 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)
你向导的任何见解都会很棒.