Rails创建多个条目复选框

时间:2012-09-21 15:34:00

标签: ruby-on-rails forms

我找不到解决方案而且我变得有点绝望......

形式:

<%= simple_form_for @skill_user, :url => create_new_skill_users_path do |f| %>

<% @skills.each do |skill| %>
<%= skill.name %>

现在......其他字段......

中的新内容
<%= f.input :prio, collection: 1..5, :as => :radio_buttons %>
<%= f.text_field :remark%>



<%= check_box_tag "skill_ids[]", "#{skill.id}" %>
<%= hidden_field_tag("skill_id", "#{skill.id}") %>
<%= hidden_field_tag(:user_id, "#{@user.id}") %>
<% end %>

控制器:

def create_new_skill
params[:skill_ids].each do|skill_id|
    SkillUser.create(
         :user_id => user_id, :instruction_id => params[:instruction_id], :remark => ??, :prio => ??
    )
  end

感谢您的支持。 现在我有一个不同的问题/两个问题。如果......你可以再次帮助我会很好。

每行中表单中的单选按钮集合。但不可用,因为它们作为一个而不是每一行。我需要一些额外的参数来指向每行的技巧。

还有如何获取控制器中的值。

备注文字字段。我在日志中得到“skill_user”=&gt; {“remark”=&gt;“”}。获取覆盖..需要某个地方[]。什么是最好的方式?

我试过了:

&lt;%= simple_fields_for“skill []”,@ skill_user do | f | %GT; 给我日志: “技能”=&GT; [{ “备注”=&gt; “中测试”}

控制器 :remark =&gt; params [:skill] [:remark] =&gt;无法将符号转换为整数 PHH ...

“text_field_tag []”返回一个哈希..

2 个答案:

答案 0 :(得分:0)

你应该写

 params[:skill_ids].each do|skill_id| 
  SkillUser.create(:user_id => params[:user_id], :skill_id => skill_id)
 end

在控制器的行动中。

根据REST约定

,您的帖子操作也应该在创建时不是新的

答案 1 :(得分:0)

由于您可能处于学习阶段,我会向您推荐一些提示并给您答案。

使用好名字命名您的操作和控制器。在这种情况下,我猜一个带有动作new的SkillController是一个不错的选择。在路线中,使用资源而不是匹配或获取/发布/放置/删除最长时间。

 def new_sk
   params[:skill_ids].each do|skill_id| 
    SkillUser.create(
      :user_id => params[:user_id],
      :skill_id => skill_id,
      :name => params[:name]
    )
   end
 end
答案是答案。这段代码很简单,你传递给SkillUser.create的是HASH,散列键是user_id,skill_id和name,它们各自的值是params [:user_id],params [:skill_id]和params [:name ]

当你不知道&#34; params&#34;的当前状态时变量是(它的哈希值是如何嵌套的等等),我建议你打印它,如下所示:

p params.inspect

在操作开始时,然后阅读正在运行服务器的终端上打印的内容。有一个名为awesome_print的宝石用颜色打印它,当你只是试图看到服务器端真正发生的事情时,它很棒(顾名思义)。

我还建议你创建一个名字好的模型。 &#34; SkillUser&#34;是错的,如果你写了UserSkill会更好。您很可能很快就会处理关系,我还建议您阅读Rails指南。

Rails guides是黄金。你可以找到90%的问题,并有很好的解释。

祝你有个美好的一天。