【问题标题】:Don't find how to link to user_post找不到如何链接到 user_post
【发布时间】:2018-06-19 16:03:49
【问题描述】:

我是 Rails 新手,我正在开发一个应用程序。我的用户可以创建帖子,帖子属于用户。在我的索引用户上,我想为每个用户链接到 user_post,我尝试了很多解决方案,但没有任何效果......

_list.html.erb:

<div id="filterrific_results">

<div>
  <%= page_entries_info users %>
</div>

<% @users.each do |user| %>
  <% if user.coach? %>
    <h1><%= user.fname %> <%= user.lname %></h1>
    <h2><%= user.mother_tongue %></h2>
      <center>
        <p><%= user.postal_code %> <%= user.locality %></p>

        <p><%= link_to "En savoir plus", **user_post_path** %></p>
      </center>
  <% end %>
<% end %>
</div>


<%= will_paginate users %>

编辑:路线:

  resources :users do
    resources :post
  end

【问题讨论】:

  • 你遇到了什么错误?
  • 所以问题出在user_post_path?你定义了哪些路线? (config/routes.rb 的相关部分有什么?)rails 知道哪些路线? (运行:rake routes,并查看相关部分。)很可能,您需要做的是:user_posts_path(user) - 但在不知道您如何设置应用程序的情况下,我无法确定。跨度>
  • 为什么这被标记为ruby-on-rails-3ruby-on-rails-4 ruby-on-rails-5?您实际使用的是哪个版本?选择一个。
  • 我有 user_post_path(user) 的错误:没有路由匹配 {:action=>"show", :controller=>"post", :user_id=>#},缺少必需的键:[:id] 我使用 Rails 5

标签: ruby-on-rails ruby ruby-on-rails-5


【解决方案1】:

您说“帖子”属于“用户”,我认为这意味着您使用的是 has_manybelongs_to。如果不是这种情况,请注意复数与单数很重要。鉴于此,您需要从ActiveRecordRelation 中提取特定帖子。请参阅以下内容:

<% @users.each do |user| %>
  <%= user.fname %> 
  #etc
  <% user.posts.each do |post| %>
    <%= link_to post.title, post %>
  <% end %>
<% end %>

这假设你已经在你的路由中设置了resources :users, :posts

【讨论】:

  • 一个用户只有一个帖子,对不起
  • 它在 post.rb 中使用belong_to 而不是belongs_to,在link_to 中使用user.post。感谢大家的帮助
  • @BenjaminRichard “它使用的是belong_to而不是belongs_to”你确定吗? belong_to 没有“s”在 rails 中不存在...
  • @sovalina 最初发布该评论时说belongs_in,所以我认为他有点困惑。
【解决方案2】:

用户和帖子之间是否存在 has_one 关系。 您可以为帖子制作嵌套路由,例如

resource :user do
  resource :post, only: [:create]
end

【讨论】:

  • 是的,用户只有一个帖子(我用路线编辑帖子)
  • @BenjaminRichard 你能投票吗?所以我可以进一步发布答案。
猜你喜欢
  • 1970-01-01
  • 2017-02-13
  • 2013-08-12
  • 2018-04-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多