在link_to

时间:2016-04-12 20:34:51

标签: ruby-on-rails ruby slash

我知道这个问题被问了很多

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

0 个答案:

没有答案