Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails-带有';其他';允许创建新的模型对象_Ruby On Rails_Model_Ruby On Rails 4_Collection Select - Fatal编程技术网

Ruby on rails Rails-带有';其他';允许创建新的模型对象

Ruby on rails Rails-带有';其他';允许创建新的模型对象,ruby-on-rails,model,ruby-on-rails-4,collection-select,Ruby On Rails,Model,Ruby On Rails 4,Collection Select,我目前有一个相当复杂的\u request\u表单,用于在我的网站中创建新的请求。目前,在创建请求时,员工必须从下拉菜单中选择自己的姓名,如下所示: “name”),:name,:name%> 这将选择将正确的员工放入请求。但是,如果员工不在数据库中,我希望在集合中选择一个其他选项,该选项将生成两个文本框(用于员工姓名和电子邮件),并在提交表单时生成新的员工 我认为这需要某种花式的Ajax,但我有限的Rails知识并没有扩展到那么远 编辑: 以下是我的全貌: <%= javascript_

我目前有一个相当复杂的
\u request\u表单
,用于在我的网站中创建新的
请求
。目前,在创建请求时,员工必须从下拉菜单中选择自己的姓名,如下所示:

“name”),:name,:name%>

这将选择将正确的
员工
放入
请求
。但是,如果员工不在数据库中,我希望在
集合中选择一个
其他
选项,该选项将生成两个文本框(用于员工
姓名
电子邮件
),并在提交表单时生成新的
员工

我认为这需要某种花式的
Ajax
,但我有限的Rails知识并没有扩展到那么远

编辑:

以下是我的全貌:

<%= javascript_include_tag :defaults, "nested_form" %>
<div class="request_form">
<% if !@request.errors.empty? %>
  <div class="alert alert-error">
    <ul>
      <% @request.errors.full_messages.each do |msg| %>
        <li><%= msg %></li>
      <% end %>
    </ul>
  </div>
<% end %>
<div class="well">
  <%= nested_form_for @request, html: { multipart: true } do |f| %>
    <%= f.label :title %><br />
    <%= f.text_field :title %><br /><br />
    <%= f.label :name, 'Submitted By' %><br />
    <%= f.select :name, Employee.sorted_employees_list.map { |value| [ value, value ] }, :id => "employee_box" %><br />
    <div id="new_employee_data">
    </div>
    <%= f.label :description %><br />
    <%= f.text_area :description %><br /><br />
    <%= f.label :attachment_uploader, 'Attachments' %><%= f.file_field :attachment_uploader, :multiple => true, name: "data_files[attachment_uploader][]" %><br />
    <% unless @request.data_files.empty? %>
      <%= f.label :attachment_uploader, 'Current Attachments:' %><br />
    <% end %>
    <%= f.fields_for :data_files do |attachment| %>
      <% if !attachment.object.new_record? %>
        <%= attachment.label :attachment_uploader, 'Delete: ' + attachment.object.attachment_uploader_url.split("/").last %>
        <%= attachment.check_box :_destroy %>
      <% end %>
    <% end %>
</div>
</div>
<script>
$(document).ready(function(){
  $('#employee_box').append("<option>Other</option>");
});

$('#employee_box').change(function() {
  if( $('#employee_box').val() === 'other' ) {
    $('#new_employee_data').append("<input type='text' id='employee_name' placeholder='Employee Name'> <br/> <br /></input><input type='email' id='employee_email' placeholder='Employee Email'>  </input>");
  }else {
    $('#employee_name').remove();
    $('#employee_email').remove();
  }
});
</script>





“员工邮箱”%>



true,name:“数据文件[附件上传程序][]”%>

$(文档).ready(函数(){ $(“#员工框”)。追加(“其他”); }); $(“#员工_框”)。更改(函数(){ 如果($(“#员工_框”).val()==“其他”){ $(“#新#员工#数据”)。追加(“

”); }否则{ $(“#员工名称”).remove(); $(“#员工电子邮件”).remove(); } });

这包括@Kirti的建议。然而,我似乎无法让它工作

添加一个空的
div
标记(占位符),在其中生成两个输入字段:

<div id="new_employee_data">

</div>
在哪里,, 将
#request_name
替换为为您的
集合所生成的
id

您还需要在提交表单时执行的
操作中添加创建新员工的代码


注意:我不是AJAX方面的专家,但您可以修改上面的jQuery并从那里开始使用它。

添加一个空的
div
标记(占位符),在其中生成两个输入字段:

<div id="new_employee_data">

</div>
在哪里,, 将
#request_name
替换为为您的
集合所生成的
id

您还需要在提交表单时执行的
操作中添加创建新员工的代码


注意:我不是AJAX方面的专家,但您可以修改上面的jQuery并从那里开始使用它。

添加一个空的
div
标记(占位符),在其中生成两个输入字段:

<div id="new_employee_data">

</div>
在哪里,, 将
#request_name
替换为为您的
集合所生成的
id

您还需要在提交表单时执行的
操作中添加创建新员工的代码


注意:我不是AJAX方面的专家,但您可以修改上面的jQuery并从那里开始使用它。

添加一个空的
div
标记(占位符),在其中生成两个输入字段:

<div id="new_employee_data">

</div>
在哪里,, 将
#request_name
替换为为您的
集合所生成的
id

您还需要在提交表单时执行的
操作中添加创建新员工的代码


注意:我不是AJAX方面的专家,但您可以修改上面的jQuery并从中获得它。

我认为弹出对话框是一个不错的选择

1) 添加到您的文件,并运行捆绑包:

gem 'jquery-ui-rails'
2) 激活jquery ui javascript(application.js):

3) 链接jquery ui样式表(application.css):

4) 为选择准备数据(employees\u controller.rb)

7) 创建在服务器端捕获ajax请求的方法(employees\u controller.rb):

8) 将其添加到routes.rb:

  post 'users/form_create' => 'users#form_create'

我认为弹出对话框是个不错的选择

1) 添加到您的文件,并运行捆绑包:

gem 'jquery-ui-rails'
2) 激活jquery ui javascript(application.js):

3) 链接jquery ui样式表(application.css):

4) 为选择准备数据(employees\u controller.rb)

7) 创建在服务器端捕获ajax请求的方法(employees\u controller.rb):

8) 将其添加到routes.rb:

  post 'users/form_create' => 'users#form_create'

我认为弹出对话框是个不错的选择

1) 添加到您的文件,并运行捆绑包:

gem 'jquery-ui-rails'
2) 激活jquery ui javascript(application.js):

3) 链接jquery ui样式表(application.css):

4) 为选择准备数据(employees\u controller.rb)

7) 创建在服务器端捕获ajax请求的方法(employees\u controller.rb):

8) 将其添加到routes.rb:

  post 'users/form_create' => 'users#form_create'

我认为弹出对话框是个不错的选择

1) 添加到您的文件,并运行捆绑包:

gem 'jquery-ui-rails'
2) 激活jquery ui javascript(application.js):

3) 链接jquery ui样式表(application.css):

4) 为选择准备数据(employees\u controller.rb)

7) 创建在服务器端捕获ajax请求的方法(employees\u controller.rb):

8) 将其添加到routes.rb:

  post 'users/form_create' => 'users#form_create'

在JQuery运行时遇到了一些问题,我在我的完整表单中添加了一个编辑。你能检查一下我做的每件事都正确吗?干杯将选项
Other
作为
$(“#employee_框”)添加值。附加(“Other”)
您错过了该部分。另外,请删除
:id=>“employee\u box”
,因为
f.select
将为您生成一个id。您需要在javascript中使用此id。您可以通过在浏览器中执行Page
View Source
来找到该id。谢谢,原来
\request\u name
就是该id,我不需要更改它,也不需要添加我自己的id!你能详细说明一下
行动吗?我认为不仅仅是在
员工控制器
中编写
创建
函数,还有更多的工作要做。在JQuery运行时遇到了一些问题,我在完整表单中添加了一个编辑。你能检查一下我做的每件事都正确吗?干杯将选项
Other
作为
$(“#employee_框”)添加值。附加(“Other”)