複数の ID をデータベースに正しく保存するのに問題があります。リスト ID と価格の 2 つのパラメータを持つリストがあります。
current_user を受け入れるようにコントローラーを変更しようとしましたが、運がありません。モデルを変更してみました。また、user_id と book_id を指定してリストを手動で作成しようとしました (実際、正しい本とユーザー ID を指定していることを確認しています)。手動のリストでは、@ 記号を使用せずに変数名を作成しようとしましたが、エラーはありませんが、データベースに値を保存できません。
私の出品モデル:
class Listing < ActiveRecord::Base
belongs_to :user
belongs_to :book
has_one :order
belongs_to :user, class_name: 'Listing'
attr_accessible :listing_id, :price
end
私のユーザーモデル:
class User < ActiveRecord::Base
has_many :books
has_many :listings
belongs_to :creator, class_name: 'User'
end
私の本のモデル:
class Book < ActiveRecord::Base
has_one :status
has_one :listing
belongs_to :user
attr_accessible :condition, :isbn, :location, :title, :weight, :comment, :description, :price
validates :isbn, :isbn_format => true
end
マイ リスティング コントローラーの作成機能
def create
@listing = Listing.new(params[:listing])
@listing.user_id = current_user_id
respond_to do |format|
if @listing.save
format.html { redirect_to @listing, notice: 'Listing was successfully created.' }
format.json { render json: @listing, status: :created, location: @listing }
else
format.html { render action: "new" }
format.json { render json: @listing.errors, status: :unprocessable_entity }
end
end
end
user_id および book_id 列を手動で作成しようとした方法:
<b><%= "Returned: "+doc.css("Ack").text %> </b> #returns if listing was a failure or success
<b><%= "Listing ID: "+doc.css("ItemID").text %></b> #returns the listing itemID
<% @book = Book.find_by_id(params[:book_id_num]) %><br /> #passed from a previous page
<% @user = User.find_by_id(current_user.id) %>
<%= @book.id %> #successfully displays the correct book id on the web page
<%= @user.id %> #successfully displays the id of the current_user
<% Listing.create(:listing_id => doc.css("ItemID").text, :price => price, :book_id => @book.id, :user_id => @user.id)%>
しかし、この方法では、listing_id と price を持つリストのみが作成されます。
私はしばらく立ち往生しており、どうすればよいかわかりません。また、データベースがどのように機能するかについてもよくわかりません。誰でも私を助けることができますか?