【发布时间】:2021-05-27 05:40:48
【问题描述】:
在仅使用 Rails::API 工作 2 年后,我正在尝试通过构建 Rails 单体应用来更新我的知识。我使用 Rails 脚手架来构建 Property (rails generate scaffold property),它最终为我提供了模型、控制器和视图。现在我正在尝试使用版本控制来拥有控制器结构:api/v1/properties_controller。对于这个例子,假设我只想有 Index 动作,路由如下:
Rails.application.routes.draw do
namespace :api do
namespace :v1 do
resources :properties, only: [:index]
end
end
end
并且 rake routes 向我显示了预期的结果:
Prefix Verb URI Pattern Controller#Action
api_v1_properties GET /api/v1/properties(.:format) api/v1/properties#index
但是当我试图找到路径时,我得到了一个错误:
Api::V1::PropertiesController#index is missing a template for request formats: text/html
这意味着我在 views/api/v1/property 内部没有视图。当我将所有脚手架视图从 app/views/properties 移动到 app/views/api/v1/properties 时,出现错误:
NoMethodError in Api::V1::Properties#index
undefined method `property_path' for #<#<Class:0x00007fc4b6656f08>:0x00007fc4b66540a0>
Extracted source (around line #23):
(...)
23 <td><%= link_to 'Show', property %></td>
有什么快速的方法可以将这些路径转移到正确的路径中,或者我应该错过什么吗?
index.html.erb
<tbody>
<% @properties.each do |property| %>
<tr>
<td><%= property.name %></td>
<td><%= property.status %></td>
<td><%= property.name_tag %></td>
<td><%= property.portfolio_id %></td>
<td><%= link_to 'Show', property %></td>
<td><%= link_to 'Edit', edit_property_path(property) %></td>
<td><%= link_to 'Destroy', property, method: :delete, data: { confirm: 'Are you sure?' } %></td>
</tr>
<% end %>
</tbody>
【问题讨论】:
标签: ruby-on-rails ruby