我知道这个问题被问了很多
Rails dot instead of slash in URL
link_to delete url is not working
Path helpers generate paths with dots instead of slashes
只是为了展示其中一些。
在所有这些中,复数错误似乎是罪魁祸首。然而,当我在我的代码中尝试这些解决方案时,问题仍然存在,这就是我提交此问题的原因。
所以,在我的main_pages_controller
中 def console
@article_list = Article.all
end
路线
resources :articles, only: [:create, :destroy, :edit]
在console.html.erb
中 <% if (@article_list.any?) %>
<% @article_list.each do |i| %>
<tr>
<td><%= i.title %></td>
<td><%= i.category %></td>
<td><%= i.user.name %></td>
<td><%= link_to "destroy", i, method: :delete,
data: { confirm: "You sure?" } %></td>
<td>Edit</td>
</tr>
<% end %>
<% end %>
这导致articles.X,其中x是i的id。
如果我用articles_path(i)替换i,我会得到相同的文章。
如果我用article_path(i)替换i,我会得到article.x
如果我用articles_path(i.id)或article_path(i.id)替换i,我仍然会得到文章.X
如果重要,那就是在articles_controller
中def destroy
Article.find(params[:id]).destroy
redirect_to '/console'
end
删除文章的作用是
<td><a href="/articles/<%= i.id %>" data-method="delete" rel="nofollow" data-confirm="Are you sure?">Delete</a></td>
但我想了解发生了什么,以便我可以学习并能够在将来正确使用link_to。
修改
所以上面是我的文章资源。使用我的用户资源
路线
resources :users, only: [:create, :destroy, :edit]
main_pages_controller
def console
@user_list = User.all
end
console.html.erb
<% if (@user_list.any?) %>
<% @user_list.each do |i| %>
<tr>
<td><%= i.name %></td>
<td><%= i.email %></td>
<td><%= link_to "destroy", i, method: :delete,
data: { confirm: "You sure?" } %></td>
<td>Edit</td>
</tr>
<% end %>
<% end %>
这是从文章代码中复制和粘贴的全部内容,但这给了我/ users / X.因此,为了比较,用户工作,文章给我一个点。
修改
因为有人问过
Rails.application.routes.draw do
get 'sessions/new'
get 'users/new'
root 'main_pages#home'
get 'home' => 'main_pages#home'
get 'author' => 'main_pages#author'
get 'article' => 'main_pages#article'
get 'console' => 'main_pages#console'
get 'login' => 'sessions#new'
post 'login' => 'sessions#create'
delete 'logout' => 'sessions#destroy'
resources :articles, only: [:create, :destroy, :edit]
resources :users, only: [:create, :destroy, :edit]
end