Ruby on rails 如何在表单中选择记录并显示基于该记录的计算?

Ruby on rails 如何在表单中选择记录并显示基于该记录的计算?,ruby-on-rails,ruby,forms,ruby-on-rails-4,post,Ruby On Rails,Ruby,Forms,Ruby On Rails 4,Post,我需要知道如何制作一个表单,在其中可以选择一条记录,根据该记录进行一些计算并显示结果(最好在同一页上) 为了让它尽可能简单,让我们假设我想从用户模型中选择一个记录,并显示他的大写电子邮件 因此,结构将是: 大写的\u controller.rb class CapitalizedController < ApplicationController before_action :authenticate_user! def users @users = User.all

我需要知道如何制作一个表单,在其中可以选择一条记录,根据该记录进行一些计算并显示结果(最好在同一页上)

为了让它尽可能简单,让我们假设我想从用户模型中选择一个记录,并显示他的大写电子邮件

因此,结构将是:

大写的\u controller.rb

class CapitalizedController < ApplicationController
  before_action :authenticate_user!

  def users
    @users = User.all
  end
end
class CapitalizedController < ApplicationController
  before_action :authenticate_user!

  def users
    @users = User.all

    if params[:user]
      @result = User.all.find(params[:user])
      @result = @result.email.capitalize!
    else
      @result = nil
    end
  end
end
class CapitalizedController
大写/users.html.erb:

<%= form_tag('/capitalized/users') do %>
    <div class="controls">
        <%= select_tag :email, options_from_collection_for_select(@users, "id", "email"), :class => 'text_field' %>
    </div>
  <div class="form-actions">
    <%= submit_tag nil, :class => 'btn btn-primary' %>
  </div>
<% end %>
<%= form_tag('/capitalized/users', :method => "post", id: "capitalize-form") do %>
    <div class="controls">
        <%= select_tag :user, options_from_collection_for_select(User.all, "id", "email", params[:user]), :class => 'text_field' %>
    </div>
  <div class="form-actions">
    <%= submit_tag 'Capitalize email', :class => 'btn btn-primary' %>
  </div>
<% end %>

<% if @result %>
    <p><%= @result %></p>
<% end %>

'文本\字段'%>
“btn btn主节点”%>
它的显示方式如下:


因此,在此之前,它会向我显示按字母顺序排序的用户电子邮件列表,我可以点击发送按钮(“Enviar”),它工作正常(到目前为止我没有错误),但它只会再次加载页面,我应该如何显示大写的电子邮件?

在控制器中更改以下内容:

def users
  @users = User.all
  @var_to_show_user =  User.search(params[:search_user])
end
在yor模型中,执行以下操作:

def self.search(search_mail)  
  if search  
    where('mail = ?', search_mail )  
  else  
    scoped  
  end  
end  
在你看来:

<%= form_tag('/capitalized/users') do %>
   <div class="controls"><%= select_tag :email, options_from_collection_for_select(@users, "id", "email"), :class => 'text_field' %></div>
   <div class="form-actions"><%= submit_tag nil, :class => 'btn btn-primary' %></div>
<% end %>

<% @var_to_show_user.each do |result| %>
  <%= result.mail.to_s.first.upcase   %>
<% end %>

希望这能奏效……祝你好运。

好吧,最后我唯一要做的就是:

大写的\u controller.rb

class CapitalizedController < ApplicationController
  before_action :authenticate_user!

  def users
    @users = User.all
  end
end
class CapitalizedController < ApplicationController
  before_action :authenticate_user!

  def users
    @users = User.all

    if params[:user]
      @result = User.all.find(params[:user])
      @result = @result.email.capitalize!
    else
      @result = nil
    end
  end
end
class CapitalizedController
大写/users.html.erb:

<%= form_tag('/capitalized/users') do %>
    <div class="controls">
        <%= select_tag :email, options_from_collection_for_select(@users, "id", "email"), :class => 'text_field' %>
    </div>
  <div class="form-actions">
    <%= submit_tag nil, :class => 'btn btn-primary' %>
  </div>
<% end %>
<%= form_tag('/capitalized/users', :method => "post", id: "capitalize-form") do %>
    <div class="controls">
        <%= select_tag :user, options_from_collection_for_select(User.all, "id", "email", params[:user]), :class => 'text_field' %>
    </div>
  <div class="form-actions">
    <%= submit_tag 'Capitalize email', :class => 'btn btn-primary' %>
  </div>
<% end %>

<% if @result %>
    <p><%= @result %></p>
<% end %>
“post”,id:“大写形式”)do%>
'文本\字段'%>
“btn btn主节点”%>

它的显示方式如下:


您有两种选择,要么使用AJAX,要么在用户模型中已经具备进行这些计算所需的一切,然后隐藏该信息,并使用javascript显示/隐藏该信息。你要什么都行。Rails有一些表单助手来构建ajax表单。祝你好运