Rails - не могу найти твит без ID - PullRequest
0 голосов
/ 15 апреля 2020

Я пытаюсь сделать приложение блога. Я не смог получить идентификатор твита для params [: id]. Я хотел бы определить переменные экземпляра в действии индекса и использовать его для аргумента. Проблема возникла из-за того, что «find», вероятно, ложный. Но это не помогло.

class TweetsController < ApplicationController
  before_action :move_to_index,except: [:index,:show]

    def index
        @tweets= Tweet.all.order(id: "DESC")
        @tweet = Tweet.find(params[:id])  # <=here!!!
        @like = Like.new
    end

.....  

    private
    def tweet_params
        params.require(:tweet).permit(:text)
    end    

    def move_to_index
            redirect_to action: :index unless user_signed_in?
    end    

end
    #tweets.index.html.erb
    <% if user_signed_in? %>
    <%= current_user.username %> hello!?
<% end %>
<p class="sample14"></p>
<% @tweets.each do|tweet|%>
    <p><%= tweet.user_name %>さん</p>
    <p><%= tweet.text %></p>
    <%= date_format(tweet.created_at) %>
    <% if user_signed_in? %>
            <% if current_user.id == tweet.user.id %> 
                <%= link_to 'edit', "/tweets/#{tweet.id}/edit", method: :get %>
            <% end %>
    <% end %>        
    <%= link_to "details","/tweets/#{tweet.id}",method: :get%>
    <% if user_signed_in? %>
        <% if current_user.already_liked?(@tweet)%>  # <=here!!!
            <div class="good_button">
                <%=link_to image_tag("p1.jpeg"),"/goods",method: :post %>
            </div>    
        <% else %>
            <%= button_to 'delete like',tweet_like_path(@tweet),method: :delete%> 
        <% end %>
    <% end %>    
        <%= tweet.liked_users.count %>  
    <p class="sample14"></p>
<% end %>  

Сообщение об ошибке введите описание изображения здесь

Пожалуйста, сообщите мне, как решить эту проблему?

1 Ответ

0 голосов
/ 15 апреля 2020

Если вы действительно не знаете, что делаете, вы можете переместить этот лог c:

    @tweet = Tweet.find(params[:id])  # <=here!!!

... в отдельный метод show. Потому что обычно в индексе указываются твиты, а в шоу показывается твит

Но вы также можете добавить:

    @tweet = Tweet.find(params[:id]) if params[:id]

Чтобы проверить, что параметр действительно передан, откуда и возникает ваша ошибка, когда не.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...