[英]Ruby on Rails belongs_to many
這是我的情況:
項目:
has_many :games
用戶數:
has_many :games
游戲:
belongs_to :user
belongs_to :item
在我的項目頁面上,我有一個用於創建新游戲的鏈接。 如何以安全的方式獲取商品ID? 因為在我的數據庫中,我需要為user_id和item_id存儲1個游戲。 現在,我正在這樣做,它僅自動存儲user_id:
def create
@game = current_user.games.build(game_params)
if @game.save
redirect_to root_url
else
render 'pages/home'
end
end
private
def game_params
params.require(:game).permit(:time, :score)
end
我想添加game_params:item_id不是正確的方法,也不安全嗎?
這是想要的方案:
用戶來到項目頁面,單擊按鈕以創建游戲,當我錄制游戲時,我希望能夠存儲user_id(對於此部分來說是可以的)和item_id,而無需任何其他用戶交互。 我不希望他“手動”選擇我要“強制”(由於他來自何處)
在理想的世界中,我想:
使用current_user.games
類的內容從一個用戶檢索每個游戲
使用item_id.games
東西從一個物品中檢索每個游戲
在您的商品頁面中使用:
new_form_path(item_id: @item.id)
代替:
new_form_path
在您的游戲形式中:
= form_for @game do |f|
= f.hidden_field :item_id, value: params[:item_id]
在游戲控制器中:
params.require(:game).permit(:time, :score, :item_id)
有很多方法可以做您想要的,這就是其中一種。
我想這就是你要找的
<%= button_to "New Game", {controller: 'games', action: 'create'}, params:{item_id: item.id} %>
這將生成html之類的
<form method="post" action="/games/create" class="button_to">
<div>
<input type="hidden" name="item_id" value="YOUR ITEM ID" />
<input type="submit" value="New Game" />
</div>
</form>
當您單擊按鈕時,它將item_id
作為發布請求傳遞給控制器。 由於我不知道您的實際視圖是什么樣子,所以我不確定您在哪里得到諸如:time
和:score
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.