如何设置在自动填充字段中选择的元素

时间:2011-03-30 03:42:41

标签: ruby-on-rails ruby ruby-on-rails-3 controller

我让用户从自动填充字段中选择流派。此字段位于配置文件的编辑视图中,因此我在配置文件模型中有accepts_nested_attributes_for :genres。此外,类型和个人资料彼此之间有has_and_belongs_to_many个关联。我的问题是你如何采用用户选择的类型并为该用户的个人资料设置它们?我需要什么样的控制器代码?代码会进入配置文件或流派控制器吗?

我正在使用它进行自动完成:http://loopj.com/jquery-tokeninput/我已经预先填充了类型表并将脚本连接到文本字段。现在,当用户键入时,自动完成功能会成功显示建议。现在我想用选定的类型更新数据库。此数据库是流派和配置文件之间的连接表。我该怎么做以及在哪里这样做?

总之,当我单击配置文件编辑视图中的按钮时,我想保存配置文件ID与所选类型的ID之间的关联。现在我收到了这个错误:

ActiveRecord::UnknownAttributeError in ProfilesController#update

unknown attribute: genre
Rails.root: /rubyprograms/dreamstill

app/controllers/profiles_controller.rb:18:in `update'
app/controllers/profiles_controller.rb:17:in `update'

这是我的个人资料编辑视图:

<%= form_for(:profile, @profile, :url => {:controller => "profiles", :action => "update"}, :html => { :multipart => true, :method => :put }) do |f| %>
...
<%= f.fields_for :genre do |g| %>
 <div class="field">
      <%= g.label :name, "Genres" %><br />
      <%= g.text_field :name, :id => 'genre_field' %>
  </div>
<% end %>
...
<div class="action">
  <%= f.submit :profile, :value => "Update Profile" %>
</div>
<% end %>

1 个答案:

答案 0 :(得分:1)

查看此页面http://loopj.com/jquery-tokeninput/demo.html

在此页面中,根据我的理解点击提交元素的提醒ID。

以下head中的脚本执行此操作

<script type="text/javascript">  
  $(document).ready(function() {  
    $("input[type=button]").click(function () {  
     alert("Would submit: " + $(this).siblings("input[type=text]").val());   
    });
   });
</script>

这个垫帮你... 基本上有一个隐藏的文本字段存储所选元素的ID