Rails-在没有ID的情况下找不到推文

问题描述 投票:0回答:1

我正在尝试制作博客应用程序。我无法获取params [:id]的tweet ID。我想在索引操作中定义实例变量,并将其用作参数。发生此问题的原因是『发现』可能是错误的。但这并没有解决。

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

错误消息enter image description here

请告诉我如何解决此问题🤔

ruby-on-rails
1个回答
0
投票

除非您真的很清楚自己在做什么,否则可能要改变这种逻辑:

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

...转换为单独的show方法。因为通常索引会列出Tweet,而show会显示Tweet

但是您也可以添加:

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

要检查该参数是否实际传递,这是您的错误出自何处。

© www.soinside.com 2019 - 2024. All rights reserved.