表单上的不同类型的问题

时间:2013-07-19 13:58:47

标签: ruby-on-rails forms

我正在尝试构建一个应用程序,人们可以来这里注册某些程序。

通过申请表,我需要有不同类型的问题,一些文本字段,一些文本区域,一些选择和一些复选框。

目前,我已经创建了一个包含内容的模型问题。我在考虑创建一个问题类型模型或不同的模型(每种问题类型一个),这样在创建表单时,用户可以选择他想问的问题的类型。

以下是问题模型:

class Question < ActiveRecord::Base
belongs_to :post
end

问题表:

create_table "questions", force: true do |t|
t.datetime "created_at"
t.datetime "updated_at"
t.integer  "post_id"
t.text     "content"
end

目前,在_form.rb中:

<%= form_for @post do |f| %>
<%= f.fields_for :questions do |qform| %>
    <% render 'question_fields', :f => qform %>
    <% end %>
    <p><%= link_to_add_fields "Add text area", f, :questions %></p>
<% end %>

_question_fields.rb:

    <p>
      <%= f.label :content, "Question" %>
      <%= f.text_area :content %><br>
      <%= f.check_box '_destroy' %>

    </p>

javascript函数是:

In application_helper.rb : 

    def link_to_add_fields(name, f, association)
    new_object = f.object.class.reflect_on_association(association).klass.new
    fields = f.fields_for(association, new_object, :child_index => "new_#{association}") do |builder|
    render(association.to_s.singularize + "_fields", :f => builder)
    end
    link_to_function(name, "add_fields(this, \"#{association}\", \"#{escape_javascript(fields)}\")")
    end

In application.js :

    function add_fields(link, association, content) {
    var new_id = new Date().getTime();
    var regexp = new RegExp("new_" + association, "g")
    $(link).parent().before(content.replace(regexp, new_id));
    }

怎么做?

1 个答案:

答案 0 :(得分:0)

如果您想开展调查,问卷调查,测验..那么请尝试Surveyor Gem。 它可以让您在应用程序中生成问卷。看看这个:

https://github.com/NUBIC/surveyor