`

ruby 不同提交表单

阅读更多

以form_for为例

<% form_for :product, :url=>{:action=>'create'}, :html=>{:multipart=>true} do |form| %>

<%end%>

 

1 表格为products,假设,字段: name,

<%=form.text_field 'name',{},:size=>20%>

     def create

            product=Product.new(params[:name])

             product.save

         end

      end

 

2 多个动态添加字段  name

 <%=form.text_field 'name[]',:size=>20%>

   保存:

       def create

          params[name].each do |name|

              product=Product.new(name)

             product.save

         end

       end

 

 保存提到model

     def create

          product=Product.batch_build(params[:name])

     end

  

   model 方法

   def self.bath_build name

         name.each do |n|

             product=Product.new(n)

              product.save

         end

    end

 

3  不属于procducts表,例如users 中的  phone,但必需在表单提交内

 

   <%=text_filed_tag 'user[phone]',{},:size=>20%>

  

   def create

        user=User.new(params[:user][phone])

        user.save   

        或是  user.phone=params[:user][:phone]     user.save

   end

 

4  不属于Products表,动态添加字段

     view:   

           <td>
               <%=text_field_tag 'material[][batch_no]', nil, :size=>3%>
          </td>
            <td><%=text_field_tag 'material[][composit]', nil, :size=>3%></td>
            <td><%=text_field_tag 'material[][tension]', nil, :size=>3%></td>

     controller

      def create

        material_state =MaterialState.build_batch(params[:material])

      end

   model

       def self.build_batch material
             material.each do |material|
             material=MaterialState.new(material)
             material.save
      end

5.批量修改

 

  view:

<%@product.material_states.each do |f|%>
	  <%=hidden_field_tag 'material[][id]',f.id%>
		     <tr class="row" >
		     	<td>
				    <%=ongoing_material_select 'material[][material_id]',nil %>
					<%if f.material%>
						<%=f.material.name%>
                    <%end%>
				</td>
				<td>
				    <%=ongoing_provider_select 'material[][provider_id]',nil %>
					<%if f.material%>
					    <%=f.provider.name%>
					<%end%>
				</td>
				<td>
				    <%=text_field_tag 'material[][batch_no]', f.batch_no, :size=>3 %>
				</td>
				<td>
				    <%=text_field_tag 'material[][composit]', f.composit, :size=>3 %>
				</td>
				<td>
				    <%=text_field_tag 'material[][tension]', f.tension, :size=>3 %>
				</td>
				<td>
				    <%=del_row (f) %>
				</td>
		     </tr>  
<%end%>

 controller:

def edit
    prepare_basic_data
    @product = Product.find(params[:id])
    if @product.mparts.size==0
      5.times do
        @product.mparts << Mpart.new
      end
    end
    @style = @product.style
  end
  
  def update
    @product = Product.find(params[:product][:id])  
    @product.attributes = params[:product]
    material=MaterialState.batch_update(params[:material],params[:product][:id])
    
   if @product.save
      flash[:notice]="修改已经保存,请检查详情"
      redirect_to :action=>'show', :id=>@product
    else
      prepare_basic_data
      render :action=>'edit'
    end    
  end

 model:

 

 #原料说明更新
  def self.batch_update material,product
     material.each do |m|
       material_state=MaterialState.find_by_id(m[:id])
       if material_state!=nil
          material_state.update_attributes(m)
       else
          material=MaterialState.new(m)
          material.product_id=product
          material.save
      end
    end
  end

 
如果有新的,会及进补充。

希望能我一样的初学者带来帮助     

 

分享到:
评论

相关推荐

    Ruby-SimpleForm轻松处理Rails表单

    在Ruby on Rails框架中,构建表单是一项常见的任务,而Simple Form gem就是为了简化这一过程而设计的。Simple Form是一款强大的表单构建器,它提供了一种简洁、直观的方式来创建复杂的表单,使得开发者能更专注于...

    Ruby-Cocoon轻松处理容易嵌套表单

    通过这种方式,Cocoon允许用户在前端动态地创建和管理嵌套模型,而无需多次提交表单或者跳转页面。这极大地提高了用户体验,并且使开发者能够更专注于业务逻辑,而不是复杂的前端交互。 在压缩包文件`cocoon-master...

    Ruby-MailForm直接从Rails的表单发送电子邮件支持I18n验证附件和请求信息

    例如,你可以获取用户的IP地址或者他们通过哪个页面提交了表单。 总之,MailForm是Rails开发中的一个强大工具,它简化了邮件发送过程,同时提供了验证、I18n支持和附件功能,使你能够轻松构建高效且用户友好的电子...

    ruby上传文件

    在文件上传中,视图通常包含一个HTML表单,允许用户选择本地文件并提交。表单可能会包含`&lt;input type="file"&gt;`元素,用户可以通过它来选取文件。视图也可能会显示上传进度或结果反馈。 4. **Database**:文件上传...

    ruby watir教程

    # 提交表单 # 这里假设有一个提交按钮,可以根据实际情况选择合适的元素 # ie.button(:value, "Submit").click ``` 此脚本演示了如何使用Watir自动化浏览器操作,并填充表单数据。实际应用中可能还需要处理更多复杂...

    ruby 自动化框架watir

    通过选择不同的浏览器驱动,你可以针对不同环境进行测试,确保应用在各种浏览器上的表现一致。 安装Watir通常是通过RubyGems,Ruby的包管理器,执行`gem install watir`命令即可。在Windows上,由于可能需要特定的...

    ruby+selenium-webdriver测试--第一个例子源代码

    # 提交表单或触发搜索 search_box.submit # 检查页面内容,比如确认搜索结果出现 expect(driver.page_source.include?('搜索结果')).to eq(true) # 关闭浏览器窗口 driver.quit ``` 在上面的代码中,我们首先引入...

    ruby on rails对mongodb的操作

    在Rails应用中,我们还可以使用`form_for`和其他Rails助手来处理表单提交,以及`render`和`redirect_to`来管理视图和路由。 最后,`Rails应用中MongoDB+MySQL杂交`的话题意味着在同一个应用中同时使用MongoDB和...

    Ruby-Reform能够给你一个Form对象模型包含验证和嵌套设置

    而`submit`方法则可以用来处理表单的提交,成功时会返回一个包含所有数据的新实例,即使这些数据可能来自于不同的模型。 关于Reform的安装,你只需在Gemfile中添加`gem 'reform'`,然后运行`bundle install`。在你...

    resume 用Ruby技术实现的search 分页的例子

    在实际项目中,可能还需要处理搜索和分页的交互,比如通过表单提交搜索查询,并结合分页展示结果。可以创建一个简单的HTML表单: ```erb , method: :get do %&gt; , params[:search], placeholder: '搜索用户名' %&gt; ...

    ruby+selenium-webdriver测试--多个测试用例源代码

    # 提交表单 @driver.find_element(xpath: '//input[@type="submit"]').click # 验证是否成功登录 assert_equal 'Welcome, valid_user!', @driver.title end def test_invalid_login # 填写错误的用户名和...

    基于ruby on rails开发示例源码

    通过分析这个源码,你可以学习如何使用Rails创建控制器、模型和视图,如何定义路由,如何处理表单提交,如何使用ActiveRecord进行数据库操作,以及如何编写测试确保代码质量。此外,你还可以了解Rails的自动化工具,...

    Ruby - NetHTTP实现短信验证码注册登录完整示例:Ruby - NetHTTP.rb和附件说明.rar

    这个库使得开发者可以方便地发送HTTP请求并接收响应,从而执行各种网络操作,比如下载文件、提交表单或者,正如标题所示,实现短信验证码的注册和登录功能。在这个示例中,我们将探讨如何利用Net::HTTP库来构建一个...

    Ruby-Mechanize一个让自动化web交互变得容易的ruby库

    你可以选择一个表单,填充字段,然后提交,就像在浏览器中操作一样: ```ruby form = page.forms.first form.field_with(name: 'username').value = 'my_username' form.field_with(name: 'password').value = 'my_...

    Ruby on rails开发从头来

    Rails提供了丰富的助手方法,如`@products = Product.all`来获取所有产品,`params[:product]`来获取表单提交的数据。 视图是用户看到的部分,通常使用ERB(Embedded Ruby)模板语言编写。在`app/views/products`...

    Ruby on Rails 指南 v5.0.1 中文版

    - **理解参数命名约定**:解释表单提交时参数的命名规则。 - **处理外部资源的表单**:指导如何处理来自外部资源的数据。 - **创建复杂表单**:介绍如何构建包含多个嵌套字段的复杂表单。 #### ActionController...

    Wrox - Beginning Ruby on Rails

    - **表单与用户输入处理**:教授如何在Rails应用中处理表单提交及用户输入数据。 - **测试与部署**:介绍如何对Rails应用进行单元测试和集成测试,以及部署到生产环境的方法。 - **进阶主题**:涵盖一些高级主题,如...

    ruby多模型绑定

    例如,在展示帖子详情的页面上,可以通过嵌入表单来让用户提交新评论: ```html &lt;h2&gt;Add a comment: ([@post, @post.comments.build]) do |f| %&gt; &lt;%= f.label :commenter %&gt;&lt;br/&gt; &lt;%= f.label :body %&gt;...

    Ruby-Administrate一个框架用于在Rails中创建灵活的强大的管理仪表板

    "thoughtbot"可能是指该框架的创建者或主要维护者的团队名称,而"e980d40"可能是Git仓库中的一个提交哈希值,代表了这个版本的特定更新或修复。 关于Administrate的知识点包括: 1. **安装**:使用RubyGems可以...

Global site tag (gtag.js) - Google Analytics