使用表单附加默认参数

时间:2014-03-18 22:14:34

标签: ruby-on-rails forms

为了让用户使用我的搜索表单,他们键入用户的姓名,按提交,然后rails会显示该用户的主页。我仍然是初学者,并且"主页"当我输入用户名" test"时,用户到达的是对指向URL GET的{​​{1}}方法的响应。在搜索框中。

在控制器操作http://localhost:3000/center/show_user?utf8=%E2%9C%93&name=test&commit=Search中,我设置了center#show_user 在视图中,它与@user = User.find_by(name: params[:name])显示良好。

我想在<%= @user.name %>页面上创建一个表单,用于创建新的&#34;项目&#34;。在项目中属于用户定义项目,并且用户被定义为拥有许多项目(用户具有item_id列并且项目具有user_id列)。

提交此表单时,如何在其中包含当前user_id,该user_id是从托管表单的页面上的url中继承的?例如,如果我转到名为&#34; sample_user&#34;的用户的页面,我希望能够提交一个&#34;新项目&#34;表单并自动将user_id与该表单一起包含在内。


&#39;中部&#39;该页面的控制器代码是

center#show_user

2 个答案:

答案 0 :(得分:0)

添加

<%= hidden_field_tag "user_id", current_user.id %>

形成。

答案 1 :(得分:0)

您应该通过与用户的关系创建“项目”。这意味着:

在您的用户模型中给出:

class User < ActiveRecord::Base
  has_many :items
end

在控制器中执行以下操作:

def create
  @user = User.find_by(name: params[:name])
  @user.items.create(params[:item])
  # redirect_to or something different...
end

这将自动为您建立关系(基本上为您填写user_id字段)。这样做的原因是用户不能弄乱您的表单并在隐藏字段中填写其他用户ID。