【问题标题】:Getting a new nested resource's parent id for a form获取表单的新嵌套资源的父 ID
【发布时间】:2015-08-21 07:24:12
【问题描述】:

我有一个属于_to Group 的资源Decision。组 has_many 决定。我希望在保存在数据库中的每个决定上将组的主键 (id) 保存在整数字段 group_id 上。我正在这样做并且它有效,但它似乎是一种非常做作的方式。有没有更直接或“Railsy”的方式来做到这一点?

首先,我的控制器操作/视图有一个组实例变量,我以这种方式链接到一个表单:

<%= link_to "New decision", new_group_decision_path(@group) %>

..这样我的表格就在 /groups/:group_id/decisions/new 上

我在 DecisionsController 下的新方法为表单创建了一个新的@decision,并将我从 params 获得的 :group_id 传递给它。

def new
  @decision = Decision.new(group_id: params[:group_id]
end

然后我在 new.html.erb 的表单中提取 @decision.group_id 并将其放入 hidden_​​field 以便使用 group_id 创建决策。我是否需要通过参数传递该 group_id,然后是实例变量,然后通过隐藏字段还是有更直接的方法?谢谢!

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-4


    【解决方案1】:

    首先,更改您的 new 操作,使其更加“railsey”...对您的控制器进行一些细微的更改

    before_action :set_group, only: [:new, :create] # or other actions that do not apply here
    
    def new
        @decision = @group.decisions.build # or new
    end
    
    def create
        @decision = @group.decisions.create(decision_params)
    end
    
    
    private
        def set_group
            @group=Group.find(params[:group_id])
        end
    
        def decision_params
            params.require(:decision).permit(:list,:of,:permitted,:params)
        end
    

    所以,你不需要通过隐藏字段或其他方式来澄清组:它已经在 url...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-30
      • 1970-01-01
      • 2016-11-06
      相关资源
      最近更新 更多