2015-02-23 29 views
1

我需要知道如何製作表格,您可以在其中選擇記錄,根據該記錄進行一些計算並顯示結果(最好在同一頁面上)。如何選擇表單中的記錄並根據該記錄顯示計算結果?

爲了讓它儘可能簡單,假設我想從User模型中選擇一條記錄並顯示其大寫的電子郵件。

所以結構將是:

capitalized_controller.rb

class CapitalizedController < ApplicationController 
    before_action :authenticate_user! 

    def users 
    @users = User.all 
    end 
end 

資本/ 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 %> 

而且它顯示是這樣的: Blur

因此,直到這裏它顯示我的用戶的電子郵件列表按字母順序排序,我可以打發送按鈕(「Enviar」),它工作完美(迄今爲止我沒有錯誤),但它只加載頁面再次,我應該怎麼做才能顯示大寫的電子郵件?

+0

你有兩個選擇,無論是使用AJAX還是已經擁有了在用戶模型中完成這些計算所需的一切,然後隱藏這些信息,並用javascript顯示/隱藏它。任何你想要的。 Rails有一些表單助手來構建Ajax表單。祝你好運! – fanta 2015-02-23 23:30:36

回答

0

好了,到最後我不得不做的唯一的事情是這樣的:

capitalized_controller.rb

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 

資本/ users.html.erb:

<%= 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 %> 

它的顯示方式如下:

Capitalized email

0

在你的控制人變更情況如下:

def users 
    @users = User.all 
    @var_to_show_user = User.search(params[:search_user]) 
end 

在尤爾模型做到這一點:

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 %> 

注意:

"mail" is the column's name 

"to_s" is to convert to string 

"first" is to show the first letter 

"upcase" is to show the value capitalize 

希望這個作品......並祝你好運。

相關問題