簡體   English   中英

Ruby on Rails屬於許多人

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM