【问题标题】:Use JavaScript to render multiple form in Ruby on Rails在 Ruby on Rails 中使用 JavaScript 渲染多个表单
【发布时间】:2014-11-08 22:07:34
【问题描述】:

我目前有一个表格供用户添加他们的工作经验。它看起来像这样:

student_experience.html.erb

<%= form_for(:user_student, :url => {:controller => 'profile', :action => 'add_student_experience'}) do |f| %>
    <h2>Work experience</h2>
    <p>
        <%= f.label :company_name %>
        <%= f.text_field :company_name %>
    </p>
    <p>
        <%= f.label :job_title %>
        <%= f.text_field :job_title %>
    </p>
    <p>
        <%= f.label :job_description %>
        <%= f.text_area :job_description%>
    </p>

    <%= f.submit "Next" %>

在控制器中,我有这个功能:

def add_student_experience
    @student_works = StudentWork.create(check_add_student_work_params)

    if @student_works.save
      redirect_to(:controller => 'home', :action => 'index')
    else
        render 'student_experience'
    end
  end

我想要实现的是在视图中有一个按钮,以便为用户添加更多表单,以防万一他们有多种工作经验。我该如何做到这一点?我应该在控制器中进行哪些更改以处理多个表单?谢谢!

【问题讨论】:

标签: ruby-on-rails ruby model-view-controller


【解决方案1】:

使用茧宝石。这很简单,可以为您节省大量时间。

这里是关于如何在你的案例中实现 cocoon 的详细描述。

student_exerience.html.erb

<%= form_for(:user_student, :url => {:controller => 'profile', :action => 'add_student_experience'}) do |f| %>
        <%= f.label :company_name %>
        <%= f.text_field :company_name %>
        <%= f.label :job_title %>
        <%= f.text_field :job_title %>
        <%= f.label :job_description %>
        <%= f.text_area :job_description%>
    <%= link_to_add_association 'Add experience', f, :experiences %>

    <%= f.submit "Next" %>

在与您的 student_experience.html.erb 视图相同的文件夹中创建一个名为 _experience_fields.html.erb 的新部分。

_experience_fields.html.erb

    <%= f.label :company_name %>
    <%= f.text_field :company_name %>
    <%= f.label :job_title %>
    <%= f.text_field :job_title %>
    <%= f.label :job_description %>
    <%= f.text_area :job_description%>
    <%= link_to_remove_association "remove", f%>

别忘了在你的application.js文件//= require cocoon中导入cocoon

【讨论】:

    猜你喜欢
    • 2019-07-13
    • 1970-01-01
    • 1970-01-01
    • 2011-05-18
    • 2017-09-21
    • 1970-01-01
    • 1970-01-01
    • 2019-09-25
    • 2018-06-25
    相关资源
    最近更新 更多