Rails:如何检查视图中的哪个表单已提交

时间:2016-01-21 09:55:10

标签: ruby-on-rails ruby-on-rails-4

一页上有两个表格。我希望控制器中的if else语句根据提交的表单使用不同的参数和变量值。从谷歌搜索中我发现的最好的是在提交按钮上有一个值。

 <%= f.submit "Save" :value => "x"  %> 

如果这是一种似是而非的方式,我无法找到如何制作if else语句来检查提交值是否为&#39; x&#39;。

这样的东西
 if submit.value == 'x' 
    do something
 else
    do something else
 end

真的不确定。如果有另一种方法在控制器中有一个if else声明来捕捉女巫形式是通过使用身份证或姓名或我乐意听到的任何内容提交的。

3 个答案:

答案 0 :(得分:1)

{{1>}的帮助下,可以访问 提交按钮 ,所以你可以用它来检查提交的表格。

params[:commit]

答案 1 :(得分:1)

@Pavan有直接的答案,但如果您按照各自的submit值评估表单提交,则您的模式存在重大问题。

<强>表格

表单应该是一种将值传递给控制器​​的方法,然后控制器将填充模型。您不必根据这些值确定操作,除非您有不同的功能......

#app/views/posts/index.html.erb
<% @posts.each do |post| %>
   <%= form_for post do |f| %>
      <%= f.text_field :name %>
      <%= f.submit %>
   <% end %>
<% end %>

以上内容将创建多个表单,所有表单都提交到posts#update方法:

#app/controllers/posts_controller.rb
class PostsController < ApplicationController
   def update
      @post = Post.find params[:id]
      @post.update post_params
   end

   private

   def post_params
      params.require(:post).permit(:x, :y, :z)
   end
end

这些表单中的并不重要,也不会发送给post个对象;它们都将以完全相同的方式进行评估。

-

操作

另一种方法是针对不同的表单单独执行操作:

#config/routes.rb
resources :posts do
   patch :update_2, on: :member
end

#app/controllers/posts_controller.rb
class PostsController < ApplicationController
   def update_2
      @post = Post.find params[:id]
      @post.param = "value"
      @post.update post_params
   end
end

#app/views/posts/show.html.erb
<%= form_for @post, url: posts_update_2_path(@post) do |f| %>
   <%= f.submit %>
<% end %>

答案 2 :(得分:0)

您可以使用类似

的内容
var cve = "CVE-2015-4004";
val doc = Jsoup.connect(url).get() 
val tds = doc.select("tr.srrowns:has(td:contains(" + cve + ")) > td")

for( var td <- tds ){
   println( td.text() );
}

然后检查你的控制器:

<%=f.submit "Basic update", name: "basic-update" %>
<%=f.submit "Security update", name: "security-update" %>