如何从他们写的评论部分链接到用户显示页面?

时间:2011-06-15 16:25:29

标签: ruby-on-rails routing

我非常喜欢编程并试图掌握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>

行&lt;%link_to @user do%&gt;重定向到当前页面(场地显示页面),我希望它重定向到用户显示页面。

我在这里缺少什么?我在哪里可以阅读这个来做对吗?我很困惑何时使用@ user,:user,user或User。

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

1 个答案:

答案 0 :(得分:4)

这是一个很好的开始 - 看起来你只需要学习更多的Ruby,你就会得到正在发生的事情。你有两个问题,一个是关于视图助手,另一个是关于变量,符号和常量。我会捅一下。

在您的情况下,link_to标记应该使用如下:

<%= link_to user_path(@user) %>

假设您使用的是默认Rails路由,则使用link_to帮助程序指向users_controller#show的{​​{1}}方法。

问题的第二部分如下:

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

User.new是一个变量。只有在您正在处理的任何环境中才能使用它。如果您在控制器中说user,那么user = User.new对象将无法在您的视图中显示。

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

@user = User.new是用户符号。定义Rails将使用符号的内容有点困难,但在这种情况下你不需要它。

我建议您查看为什么选择Ruby的Poignant指南,或者阅读其他一些介绍书来学习更多关于语言结构的知识 - 这将有助于明确您为什么需要每个语言的结构这些。

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