我有一个通过设计创建的用户模型,一个股票模型(通过脚手架生成),因此我可以使用自己的自定义价格创建一个股票数据库,并使用UserStock模型建立两者之间的关联。在我的UI和我的控制台中,一切似乎都运行良好。
这是一个问题。 我有一个删除方法绑定到我的_list.html.erb中配置的按钮,该按钮显示用户投资组合中的所有股票。当我第一次删除它时,(从我的投资组合中删除股票)它工作正常。当我再次将股票添加到我的投资组合时,当然可以正常工作。但第二次删除不起作用。 例如,我的用户ID是1.我的UserStock协会在user_id 1和stock_id 1之间创建一个关联(比如id为1的股票是Google)。这存储在UserStock id 1中。当我删除此关联并重新创建它时,它将存储在UserStock id 2(一个全新的关联)中。但是当我再次尝试删除它时,我无法这样做。我的rails控制台在我的UserStock控制器中指示此错误。
这是弹出的错误:在UserStocksController中找不到记录#troy
def set_user_stock
@user_stock= UserStock.find(params[:id])
end
编辑:当然,这是我的观点和所需的模型:
<% if @user.id = current_user.id %>
<td>
<%=link_to "Delete", user_stock_path(user_stock), :method
=> :delete, :data => { :confirm => "Are you sure?" },
:class => "btn btn-xs btn-danger" %>
</td>
<% end %>
user.rb
has_many :user_stocks
has_many :stocks, through: :user_stocks
def can_add_stock?(ticker_symbol)
!stock_already_added?(ticker_symbol)
end
def stock_already_added?(ticker_symbol)
stock = Stock.find_by_ticker(ticker_symbol)
return false unless stock
user_stocks.where(stock_id: stock.id).exists?
end
stock.rb
has_many :user_stocks
has_many :users, through: :user_stocks
def self.find_by_ticker(ticker_symbol)
where(ticker: ticker_symbol).first
end
user_stock.rb
belongs_to :user
belongs_to :stock
答案 0 :(得分:1)
如果您尝试做的是迭代用户拥有的股票,您应该从user_stocks
结束而不是stocks
关联开始:
<% @user.user_stocks.each do |user_stock| %>
<td><%= user_stock.stock.ticker %></td>
<td><%= user_stock.stock.name %></td>
<% if @user.id = current_user.id %>
<td>
<%= link_to "Delete", user_stock_path(user_stock), method: :delete, data: { confirm: "Are you sure?" }, class: "btn btn-xs btn-danger" %>
</td>
<% end %>
<% end %>