【问题标题】:Pre-populating a form field from a link从链接预填充表单域
【发布时间】:2026-01-07 14:05:01
【问题描述】:

单击链接时,我正在尝试在表单中预填充字符串字段。我试过了:

$<%= link_to "New product", new_product_path(:product_name => "foo") %>

$<%= link_to "New product", new_product_path(:name => "foo") %>

两者都不起作用。有人知道吗?

【问题讨论】:

  • 这个 link_to 是否将 params[:name] = 'foo' 传递给页面?
  • 好的,所以 Amar 的解决方案必须有效,否则您 ;)
  • 如果它对你有用,那么你能接受答案吗?
  • 刚刚做了 - 抱歉..我是 * 的新手。

标签: ruby-on-rails ruby forms


【解决方案1】:

试试这个, &lt;%= f.text_field :name,:value=&gt;(@product.new_record? ? params[:name] : @product.name )%&gt; 或在新的行动中

def new
@product = Product.new(:name=>params[:name])
end
<%= f.text_field :name %>

【讨论】:

  • 我只希望在单击特定链接时预先填充该字段,而不是在创建新产品时预先填充。
  • 使用第一种方法,&lt;%= f.text_field :name,:value=&gt;params[:name] %&gt;
  • 但是如果我在表单中定义它,则每次都会显示该值。我只希望在用户从特定链接访问表单时显示该值。如何从 定义该值?
【解决方案2】:

您要填充的字段是当前页面还是目标页面?

如果它在当前页面上,你需要一些 javascript 来完成它,如果它在 目标页面,您可能应该根据传递的参数在您的操作中设置默认值。

【讨论】: