我正在尝试制作博客应用程序。我无法获取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
请告诉我如何解决此问题🤔
除非您真的很清楚自己在做什么,否则可能要改变这种逻辑:
@tweet = Tweet.find(params[:id]) # <=here!!!
...转换为单独的show方法。因为通常索引会列出Tweet,而show会显示Tweet
但是您也可以添加:
@tweet = Tweet.find(params[:id]) if params[:id]
要检查该参数是否实际传递,这是您的错误出自何处。