【问题标题】:How can I link to a users show page from review partial they wrote?如何从他们写的评论部分链接到用户显示页面?
【发布时间】:2011-06-15 16:25:29
【问题描述】:

我对编程非常陌生,并试图掌握 Rails,我无法弄清楚如何将链接路由到我的应用程序中的某些页面。

我有一张用户评论和场所表,其中一个用户有很多评论,一个场所有很多评论。

评论在适当的场地展示页面上显示为部分,每个部分都包含有关撰写评论的用户的信息。

部分审核

<div class="review">
  <% link_to @user do %>
    <div class="reviewer_details">
      <div class="reviewer_details_photo">
        <%= image_tag review.user.avatar.url(:thumb) %>
      </div>
      <%= review.user.username %>
    </div>
  <% end %>

  <div class="review_content">
    <div class="review_partial_star_rating" style="width: <%= review.rating*20 %>px;"></div>

    <h2 class="review_partial_title"><%= review.title %></h2>
  </div>

  <% if can? :update, review %>
    <div class="review_partial_option">
      <%= link_to 'edit', edit_review_path(review) %>
    </div>
  <% end %>

  <div class="clearall"></div>
</div>

行正在重定向到当前页面(场地展示页面),我希望它重定向到用户展示页面。

我在这里缺少什么?我在哪里可以阅读以使其正确?我对何时使用 @user、:user、user 或 User 感到困惑。

感谢您的任何帮助,非常感谢!

【问题讨论】:

  • user_path(@user) 呢?
  • @apneadiving,感谢您的关注,它试图指向具有场地 ID 的用户并给出“找不到 ID=30 的用户”错误。
  • 这真的很奇怪 :) 当您执行 &lt;%= @user.class %&gt; 时它会显示什么?
  • @apneadiving,它显示 NilClass

标签: ruby-on-rails routing


【解决方案1】:

这是一个很好的开始——看起来你只需要多学一点 Ruby,你就会明白这里发生了什么。你有两个问题,一个是关于视图助手的,另一个是关于变量、符号和常量的。我会尝试每一个。

在你的情况下,link_to 标签应该像这样使用:

<%= link_to user_path(@user) %>

假设您使用的是默认 Rails 路由,则您使用 link_to 帮助器指向 users_controller#showusers_controller#show 方法@user

你的问题的第二部分如下:

User 是您要创建的所有用户对象的常量。将其视为所有用户的蓝图。 User.new 创建一个未保存的空用户对象,供您填写所需信息。

user 是一个变量。它只会在您正在处理的任何内容的上下文中可用。如果您在控制器中输入 user = User.new,则该 user 对象在您的视图中将不可用。

@user 是一个实例变量。它的工作原理与标准变量基本相同,但如果您要在控制器中定义 @user = User.new,则可以在视图中使用该对象。

:user 是一个用户符号。定义 Rails 将使用符号的用途有点困难,但在这种情况下您不需要它。

我建议您查看Why's Poignant Guide to Ruby,或阅读其他一些介绍性书籍,以了解更多有关该语言结构的信息 - 这真的有助于清楚您为什么想要每个其中。

此外,我使用www.railsapi.com 快速搜索 Ruby 和 Rails API。

【讨论】:

  • 感谢您的出色回答!我会检查一下,虽然使用 users_path(@user) 是指向用户索引页面
  • 在 Rails 项目目录中输入 rake routes 并将 _path 附加到对应于 users_controller#show 的条目中。另外,请看这里:edgeguides.rubyonrails.org/…
  • 当然,users_path 导致索引,user_path(id) 显示
  • @apneadiving,知道了, 工作
  • @Dave:好的,太好了 :) 奇怪的是你的 @user 变量是空的!
猜你喜欢
  • 2014-12-23
  • 2017-07-31
  • 1970-01-01
  • 2012-01-07
  • 1970-01-01
  • 2019-01-31
  • 2020-07-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多