我正在使用ror建立一个网站,我有一个同人圈的列表,我想显示不同的图片并为那个粉丝写作。现在,只是为了测试,我只是在页面顶部显示粉丝的名字,但不管我点击哪一个,它只显示第一个粉丝的名字。这是我认为相关的文件的部分,但如果你需要看到更多,我会发布它。
routes.rb的部分:
get 'fandoms' => 'fandoms#index'
get 'fandoms/new' => 'fandoms#new'
post 'fandoms' => 'fandoms#create'
get 'fandoms/:id' => 'fandoms#show', as: :fandom
resources :fandoms
fandoms_controller中的show方法:
def show
@fandom = Fandom.find_by(params[:id])
end
fandoms的index.html.erb:
<div class="main">
<div class="container">
<h2>Fandoms</h2>
<%= link_to "New Fandom (dev only)", "fandoms/new" %>
<% @fandoms.each do |fandom| %>
<div class="fandoms">
<%= link_to fandom.name, fandom_path(fandom) %>
</div>
<% end %>
</div>
最后是粉丝的show.html.erb:
<div class="main">
<div class="container">
<h2>Fandoms</h2>
<div class="fandom">
<h1><%= @fandom.name %></h1>
</div>
</div>
</div>
我用codecademy上的Ror教程仔细检查了我的代码,但是我仍然找不到我想要做的任何差异。
感谢。
答案 0 :(得分:2)
您的$ swiftly --auth-url="https://identity.api.rackspacecloud.com/v2.0" \
--auth-user="{username}" --auth-key="{api_key}" --region="DFW" \
--concurrency=10 put container_name -i images/
动作有一个微妙的拼写错误,打破了您的逻辑:
show
实际应该是:
@fandom = Fandom.find_by(params[:id])
不同之处在于,@fandom = Fandom.find(params[:id])
将返回满足条件的第一行。你实际上没有通过任何条件;只是一个ID,在Postgres中甚至不起作用:
find_by
您的数据库更宽松,但似乎只是将其视为irb> Fandom.find_by(1)
PG::DatatypeMismatch: ERROR: argument of WHERE must be type boolean, not type integer
LINE 1: SELECT "fandoms".* FROM "fandoms" WHERE (1) LIMIT 1
子句,因此每一行都符合条件。因此,它每次都返回第一行。使用WHERE TRUE
可以获得所需的结果。