【问题标题】:Rails pass data to form for different modelRails 将数据传递给不同模型的表单
【发布时间】:2011-12-28 06:08:18
【问题描述】:

我有两个模型,UsersShifts

  • Users:身份证、姓名
  • Shifts: user_id, time_length

Userhas_many Shifts; Shift 属于User。相当简单。

我想做的是在我的show 用户控制器 (/users/1) 上添加一个按钮,该按钮链接到新的 Shift 控制器视图 (/shifts/new)。我已经设法用一个按钮来做到这一点,因为我想用我的Users 模型中的信息预先填充表单(即通过user.id 发送)。

我正在使用以下代码,链接正常,但不知道如何传递user.id 详细信息

button_to "Create Shift", {:controller => "shifts", :action => "new"},{ :method => "get"}

【问题讨论】:

    标签: ruby-on-rails forms rest formtastic


    【解决方案1】:

    你可以像这样向第二个参数传递额外的参数:

    button_to "Create Shift", { :controller => "shifts", :action => "new", :user_id => user.id }, { :method => "get" }
    

    这应该会生成一个类似/shifts/new?user_id=5 的 URL。

    【讨论】:

      【解决方案2】:

      你可以使用Nested resources

      在 routes.rb 中写入:

      map.resources :users do |users|
        users.resources :shifts
      end
      

      那么新班次表单的路径将是new_user_shift_path = /users/:id/shift/new

      而在shifts_controller 中你可以得到这样的用户:

      @user = User.find(params[:user_id])
      

      然后你把它作为一个隐藏的标签字段放在你的表单中。 (或者没有必要 - 我不知道确切)

      【讨论】:

        猜你喜欢
        • 2021-05-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-12-31
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多