* Show * view始终显示数据库

时间:2015-05-06 15:16:32

标签: ruby-on-rails database heroku show

我正在制作类似pinterest的应用程序,最近我遇到了一个问题。 作为登录用户时,我尝试通过“show”访问某个图钉,它会在网址中为我提供正确的ID号码。 http://localhost:3000/pins/7 但说明来自数据库中的第一项。

这是我的展示视图代码:

<%= image_tag @pin.image.url %>

<p>
 <strong> Description: </strong>
  <%= @pin.description %>
</p>

<% if @pin.user == current_user %>
<%= link_to 'Edit', edit_pin_path(@pin) %>
<% end %>

<%= link_to 'Back', pins_path %>

另一方面,当我尝试通过show或编辑通过heroku访问它时,它会以下面的消息结束:

我们很抱歉,但出了点问题。如果您是应用程序所有者,请查看日志以获取更多信息。”

这是我的github回购https://github.com/LeJaques/myfirstapp_new

我很感激你的帮助!

2 个答案:

答案 0 :(得分:3)

您的问题似乎出现在set_pin的{​​{1}}方法中。

PinController

当简单地将private # Use callbacks to share common setup or constraints between actions. def set_pin @pin = Pin.find_by(params[:id]) end 传递给params[:id]时,您将遇到问题。你应该使用

find_by

@pin = Pin.find(params[:id])

后者在后来的@pin = Pin.find_by(id: params[:id]) 方法中奇怪地使用了它。

与您的问题无关,但在将来,请将相关代码发布到您的问题中,而不是链接到您的github项目并让我们深入了解代码。这样做可以帮助您在将来获得更快的答案;如果您的correct_user方法从一开始就在您的问题中,那么这个问题将在五分钟内(而不是超过半小时)得到解答。

答案 1 :(得分:1)

您似乎正在使用find_by错误地设置@pin

def set_pin
  @pin = Pin.find_by(params[:id])
end

尝试将其更改为Pin.find(params[:id])或添加字段以Pin.find_by(id: params[:id])

进行搜索