Rails 4 - 来自url的simple_form和pre-populating字段

时间:2014-06-25 18:36:22

标签: ruby-on-rails ruby-on-rails-4 simple-form params

我正在使用simple_form,我想在我的表单中预先填充几个字段。在表单的链接中,我将几个值传递给URL中的params。当我尝试将值传递给整数或关联的字段时,会出现问题。在任何一种情况下,该字段都不会预先填充。

下面的示例...前两个字段填充正常,但我不得不强迫它们成为文本字段。也许可以将字符串从url推入字段,但理想情况下我可以使用整数(f.input)或关联(f.association)。后两个字段不会从URL中提取参数值。

有什么想法吗?提前谢谢!

注意 - 这是用于在数据库中生成新记录而不是用于编辑现有记录。

URL: http://localhost:5000/list/new?event_id=4&user_id=11

<!-- These two fields pre-populate -->
<%= f.text_field :event_id, :value => params[:event_id] %>
<%= f.text_field :user_id, :value => params[:user_id] %>

<br>

<!-- These two fields do NOT pre-populate -->
<%= f.association :event_id, :value => params[:event_id] %>
<%= f.input :event_id, :value => params[:event_id], label: 'Event' %>

PS - 我在Spotify上正在收听GusGus的新专辑,并且正在帮助它。 :)

1 个答案:

答案 0 :(得分:4)

最佳实践是预填充形式,不是直接使用params,而是使用ActiveRecord对象。 例如,您有一个AR类:

class Party < ActiveRecord::Base
  belongs_to :event
  belongs_to :user
end

然后在你的控制器中:

def new
  @party = Party.new(party_params)
end

# use strong params to make your parameter more secure;)
def party_params
  params.permit(:event_id, :user_id)
end

然后在您的编辑视图中:

<%= simple_form_for @party do |f| %>
  <%= f.association :event %>
  <%= f.association :user %>
<% end %>