「gnib」という名前のモデルの ID を取得し、非表示フィールドのフォームに送信して、ユーザーが各 gnib に添付された送信ボタンをクリックしたときに「gnib」を効果的に再投稿できるようにしようとしています。ただし、ボタンをクリックするとエラーが発生します。
ActiveRecord::Recordnotfound in Sharescontroller#create
Couldn't find Gnib with id=
誰かがこの問題を解決するのを手伝ってくれたら本当にありがたいです。
Gnib モデル
attr_accessible :title, :image, :content
mount_uploader :image, ImagesUploader
belongs_to :user
validates :content, presence: true, length: { maximum: 80 }
validates :user_id, presence: true
default_scope order: 'gnibs.created_at DESC'
has_many :reverse_shares, foreign_key: "regnib_id", class_name: "Share", dependent: :destroy
has_many :regnibbers, through: :reverse_shares
私のユーザーモデルには次のものがあります。
ユーザーモデル
has_many :gnibs, dependent: :destroy
has_many :shares, foreign_key: "regnibber_id", dependent: :destroy
has_many :regnibs, through: :shares
「共有」という名前の結合モデルを使用して、再投稿または「再登録」機能を容易にしました。
モデルを共有する
attr_accessible :regnib_id
belongs_to :regnibber, class_name: "User"
belongs_to :regnib, class_name: "Gnib"
validates :regnibber_id, presence: true
validates :regnib_id, presence: true
共有コントローラーには次のものがあります。
def create
@gnib = Gnib.find(params[:share][:regnib_id])
current_user.regnib!(@gnib)
redirect_to @gnib
end
私が持っているgnibコントローラーでは:
def create
@gnib = current_user.gnibs.build(params[:gnib])
end
show 関数の下のユーザーコントローラーには、次のものがあります。
@gnib = current_user.gnibs.build(params[:gnib]) if signed_in?
gnibsをレンダリングするためのパーシャルは、ユーザーの表示ページにあり、次のとおりです。
<li>
<span class="Title"><%= gnib.title %></span>
<span class="Image"><%= image_tag gnib.image_url(:thumb) %></span>
<span class="content"><%= gnib.content %></span>
<span class="timestamp">
Posted <%= time_ago_in_words(gnib.created_at) %> ago.
</span>
<%= render 'regnib_form' %>
</li>
regnibフォームのパーシャルは次のとおりです。
<% unless current_user?(@user) %>
<div id="regnib_form">
<% if current_user.regnibbing?(@gnib) %>
<% else %>
<%= form_for(current_user.shares.build(regnib_id: @gnib.id)) do |f| %>
<div><%= f.hidden_field :regnib_id %></div>
<%= f.submit "Regnib", class: "btn btn-large btn-primary" %>
<% end %>
<h4> Regnibs <%= @gnib.regnibbers.count %></h4>
<% end %>
</div>
<% end %>