Rails-对模型本身定义的数组集合使用best_in_placegem进行就地编辑



我看过RailsCasts#302,它描述了使用best_in_place gem的就地编辑。在性别选项中,Ryan使用show.html.erb中的数组,并将其作为下拉框(请参阅他明确定义数组的性别部分)。

<p>
  <b>Gender:</b>
  <%= best_in_place @user, :gender, type: :select, collection: [["Male", "Male"], ["Female", "Female"], ["", "Unspecified"]] %>
</p>

但我想要的是,我在模型内部定义了一个数组,如下所示:(因为我的数组元素并不简单,数量也不多)

例如:

user.rb

class User < ActiveRecord::Base
  def authencity_types
    ['Asian', 'Latin-Hispanic', 'Caucasian']
  end
end

我将如何使用best_in_place语法将此数组元素用作下拉列表。

附言:我确实试过这种

<% @users.each do |user| %>
  <%= best_in_place user, :authencity, type: :select, :collection => User::authencity_types  %>
<% end %>

但它说未定义的方法authenticaty_types

您正在User模型上定义一个实例方法,请尝试一下。

<% @users.each do |user| %>
  <%= best_in_place user, :authencity, type: :select, :collection => user.authencity_types  %>
<% end %>

或者,您可以将其定义为这样的类方法。

class User < ActiveRecord::Base
  def self.authencity_types
    ['Asian', 'Latin-Hispanic', 'Caucasian']
  end
end

或者,如果常量不需要是动态的,您可能需要考虑使用它。

相关内容

  • 没有找到相关文章

最新更新