で旅行を見つけることができませんでしたstackoverflowで解決策を検索しましたが、毎回異なる問題があるので、私は質問しました。 私のアプリケーションでは、多くの投稿を持つTravelがあります。 1人のユーザーが1回の旅行で多数の投稿を作成して多数の旅行を作成できます。 しかし、私はポストを作成しようとすると、私はこのエラーを持っている:ActiveRecordは 'id' =
:ActiveRecord::RecordNotFound in PostsController#create
Couldn't find Travel with 'id'=
誰かが私を助けることができるので、もし私が、なぜ理解していない... ここでは私のPosts_controller.rb(アクションを作成する)でありますここで
def create
@travel = Travel.find(params[:id])
@post = @travel.posts.new(posts_params)
@post.user = current_user
if @post.save
flash[:success] = "Your post is published"
redirect_to user_path(current_user)
else
render 'new'
end
end
私のモデルである:
class Post < ActiveRecord::Base
belongs_to :user
belongs_to :travel
geocoded_by :country
after_validation :geocode
end
class Travel < ApplicationRecord
has_many :posts
belongs_to :user
end
マイルート:
# Travel
resources :travels, :shallow => true do
# Posts
resources :posts
end
そしてフォームのLIGNE:
<%= form_for(@post, :html => {class: "form-horizontal", role: "form"}, :url => travel_posts_path(@travel)) do |f| %>
<div class="form-group">
<%= f.text_field :travel_id, placeholder: @travel.id %>
</div>
なぜあなたは 'id'を扱えるようにしていますか?これは悪い習慣です。 – Dbz
私は 'params'のデバッグを提案します。代わりに、 'params [:travel_id]'のようなことをする必要があります。しかし、私はまだユーザーが 'id'を選択することを許可しません。 – Dbz
@Dbz私は旅行IDをテーブルポストのtravel_id列に追加しようとしました。フォームのフィールドはちょうど私を助けるためのものです。動作するときにその行を削除します。 –