我非常喜欢编程并试图掌握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。
感谢任何帮助,非常感谢!
答案 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。