我正在制作类似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
我很感激你的帮助!
答案 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])