【发布时间】:2016-03-08 01:26:51
【问题描述】:
我是 Rails 新手,我有这个 Web 应用程序,允许用户使用 Rails 4 创建新的打印作业
app/models/job.erb
class Job < ActiveRecord::Base
belongs_to :job_type
end
app/models/job_type.erb
class Job < ActiveRecord::Base
has_many :jobs
end
在新工作创建表单中,用户必须从列表中为他的新工作选择工作类型,我设法得到它并抛出以下代码。
app/views/jobs/_form.html.erb
<div class="row">
<div class="col-md-6 col-md-offset-3">
<%= form_for(@job) do |f| %>
.....
<div class="field">
<%= f.label :job_type_id %><br>
<%= f.collection_select :job_type_id, JobType.all,:id,:name %>
</div>
<!-- Modal -->
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
<h4 class="modal-title" id="myModalLabel">Modal title</h4>
</div>
<div class="modal-body">
...
</div>
<div class="modal-footer">
</div>
</div>
</div>
</div>
<% end %>
</div>
</div>
通过一些咖啡脚本,我设法在 Job Types 菜单中添加了“Other”选项,如果它不存在,它会触发模态 #myModal 以将新的 JobType 添加到数据库中......
app/assets/javascript/jobs.coffee
$('#job_job_type_id').append("<option>Other</option>")
$('#job_job_type_id').change ->
jobType = $('#job_job_type_id :selected').text()
if jobType == "Other"
$('#myModal').modal('show')
else
$('#myModal').modal('hide')
代码运行良好并触发引导模式。但就是这样,我不知道接下来该怎么办?
我尝试了很多代码并查看了很多问题,但我没有让这个模式能够添加新的 JobType 并更新列表,我认为需要对控制器进行一些修改和花哨的 AJAX 代码超出了我的知识范围......
我有一些问题
1)我应该在模态代码中输入什么才能将新的JobType添加到数据库中,然后返回新的Job创建表单并选择新创建的JobType
2) 哪些控制器需要修改?如何?需要什么 AJAX 代码?
3) 如何重构 Job _form ?我可以将模态代码放在新的 Partial 中吗?如果是,如何实现?
希望您能帮助我,我这几天一直在努力解决这个问题。 谢谢
【问题讨论】:
标签: javascript jquery ruby-on-rails ajax twitter-bootstrap