2015-05-06 2 views
2

Я работаю над pinterest-подобным приложением, и недавно я столкнулся с проблемой. Когда я вошел во вход пользователя, я пытаюсь получить доступ к значку через «показать», он дает мне правильный номер идентификатора в URL-адресе, например. http://localhost:3000/pins/7, но описание исходит из первого элемента базы данных.* Show * view всегда показывает первый вывод (элемент) в базе данных

Вот мой Показать код вида:

<%= 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 %> 

С другой стороны, когда я пытаюсь получить к нему доступ через Heroku через шоу или изменить его, заканчивается следующим сообщением:

"Мы Сожалеем , но что-то пошло не так. Если вы владелец приложения, проверьте журналы для получения дополнительной информации ».

Вот мой GitHub репо https://github.com/LeJaques/myfirstapp_new

Я был бы признателен за помощь!

+0

Можете ли вы добавить свой код контроллера, который задает @pin на ваш вопрос, пожалуйста. Также проверьте в своем журнале, что происходит в параметрах. –

ответ

3

Ваш вопрос, кажется, в вашем методе set_pin в вашем 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]) 

последние из которых вы странно, используемых в вашем позже correct_user методе.

Не связанный с вашим вопросом, но в будущем, вместо того, чтобы связываться с вашим проектом github и заставлять нас копать код, пожалуйста, разместите соответствующий код на свой вопрос. Это поможет вам получить более быстрые ответы в будущем; этот вопрос был бы отвечен в течение пяти минут (а не через полчаса), если бы ваш метод set_pin был в вашем вопросе с самого начала.

1

Похоже, вы используете find_by, чтобы установить @pin неправильно.

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

Попробуйте изменить это просто Pin.find(params[:id]) или добавить поле для поиска по Pin.find_by(id: params[:id])

Смежные вопросы