Ruby on rails 尝试创建推文时出现错误“找不到没有ID的用户”
我正在尝试制作一个twitter克隆,其中一条tweet会在其旁边显示用户的用户名。但是,获取上述错误消息并突出显示create方法的第一行。关于如何解决的任何想法。 我已经做过了。 谢谢 推特 您的表单没有id字段,因此params[:id]为零。params哈希不包含id,因此您将收到此错误 只需将创建操作修改为Ruby on rails 尝试创建推文时出现错误“找不到没有ID的用户”,ruby-on-rails,ruby,erb,Ruby On Rails,Ruby,Erb,我正在尝试制作一个twitter克隆,其中一条tweet会在其旁边显示用户的用户名。但是,获取上述错误消息并突出显示create方法的第一行。关于如何解决的任何想法。 我已经做过了。 谢谢 推特 您的表单没有id字段,因此params[:id]为零。params哈希不包含id,因此您将收到此错误 只需将创建操作修改为 def create @user = current_user @tweet = Tweet.new(tweet_params) @tweet.user
def create
@user = current_user
@tweet = Tweet.new(tweet_params)
@tweet.user = current_user
if @tweet.save
redirect_to tweets_path
end
end
def create
@tweet = Tweet.new(tweet_params)
if @tweet.save
redirect_to tweets_path
end
end
或
您还可以从表单中传递一个用户id,而不是上述内容
<%= simple_form_for @tweet, id: "form-submit" do |f| %>
<%= f.input :content %>
<%= f.hidden_field :user_id, value: current_user.try(:id) %>
<%= f.button :submit, class: "btn btn-danger" %>
<% end %>
注意:假设您使用Desive gem进行身份验证您在使用tweet_参数后定义了tweet.users,因为tweet_参数未定义用户,所以您会出现此错误。根据此处接受的答案,最合适的更改可能是:
def new
@tweet = current_user.tweets.new
end
def create
@tweet = Tweet.new(tweet_params)
if @tweet.save
redirect_to tweets_path
end
end
无需执行其他操作。对不起,我需要将id添加到表单中?我对这个很陌生,我该怎么做?如果@tweet作为@tweet=current_user.tweets.new在新操作中传递,则thanksIt可能更合适。所有这些混乱都是可以避免的。
def create
@tweet = Tweet.new(tweet_params)
if @tweet.save
redirect_to tweets_path
end
end
def new
@tweet = current_user.tweets.new
end
def create
@tweet = Tweet.new(tweet_params)
if @tweet.save
redirect_to tweets_path
end
end