更好的方式(或更正方式)接收控制器中的函数值

时间:2014-01-15 11:50:21

标签: ruby-on-rails ruby ruby-on-rails-3

我是新手:PP,我有一个函数调用“搜索”,这个函数收到2个值,主题和q,用户选择类型并在字段框中插入关键字后,用户点击在提交。 我可以在函数搜索中看到这些值,但不能在索引中看到,所以我使用的是全局变量:PP

但是丑陋,有更好的方法吗?

welcome_controller.rb

class WelcomeController < ApplicationController
 before_filter :require_user

 def index
  @theme = $a
  @value = $b
 end


 def search
  $a = params[:theme]
  $b = params[:q]
  redirect_to :root
 end
end

视图/欢迎/ _search.html.erb

<%= form_tag(:controller => 'welcome', :action => 'search', :method => 'get') do %>

<div style="background:#fafafa; color:#222; padding:10px;">
<h4>Pesquisa Avançada</h4>
  <table>
  <tr>
    <td>
      <input type="radio" name="radiog_dark" class="css-checkbox">
        <% [ 'Analista', 'Estagiário' ].each do |theme| %>
            <%= radio_button_tag 'theme', theme, @theme == theme, :class => "radio"%>
          <%= theme %><br>
        <% end %>
      </input>
    <td><%= text_field_tag :q, nil, :placeholder => 'Palavra-chave' %>  
    <%= submit_tag("Pesquisar") %></td>

  </tr>
</table>
<% end %>

<% if @theme == "Analista"%>
  <%= render "search_systems_analyst" %>
<% elsif @theme == "Estagiário" %>
  <%= render "search_intern" %>
<% end %>

Ps:对不起我的英文

2 个答案:

答案 0 :(得分:3)

试试这个

redirect_to :root_path(theme: params[:theme], q: params[:q])

答案 1 :(得分:1)

了Lorena,

你必须像redinJ那样传递redirect_to。

redirect_to :root_path, theme: params[:theme], q: params[:q]

您正在向您的GET请求发送操作搜索“params [:theme]和params [:q]”,但您没有将这些参数发送到您的索引操作