Rails将视图概括为助手

时间:2013-08-20 16:35:42

标签: ruby-on-rails

我想知道你是否能够提供帮助。首先,我有一个观点如下:

   <%= form_tag all_path, :method => 'get' do %>
        <%= hidden_field_tag :direction, params[:direction] %>
        <%= hidden_field_tag :sort, params[:sort] %>
        <p>
            Search: 
            <%= text_field_tag :search %>
            by 
            <%= select_tag :search_column, options_for_select(MyTable.translated_searchable_columns(['col1', 'col2']), params[:search_column]) %>
            <%= submit_tag 'Search' %>
        </p>
    <% end %>

我对其他视图的数量使用相同的代码,因为它们是类似的页面。我正试图让这个干。更改的值为"MyTable", "col1", "col2"

其他一切都保持不变。我不明白的是我如何在辅助方法中执行此操作,我尝试复制和粘贴并将这些值作为参数传递但是这不起作用因为帮助程序是ruby代码?不是HTML。我将如何在application_helper.rb中创建它?我是否构建了一个传回的字符串,或者是否有另一种方式,因为我也在使用MyTable,这部分让我感到困惑。

1 个答案:

答案 0 :(得分:3)

建议将整个视图文件保留为部分文件。而不是MyTable,col1和col2使用一些变量。您可以使用控制器中的那些变量的不同值来渲染此部分。

您所要做的就是使用带有参数的render_partial作为这三个变量。

创建一个部分。(mypartial),如下所示

 <%= form_tag all_path, :method => 'get' do %>
        <%= hidden_field_tag :direction, params[:direction] %>
        <%= hidden_field_tag :sort, params[:sort] %>
        <p>
            Search: 
            <%= text_field_tag :search %>
            by 
            <%= select_tag :search_column, options_for_select(my_table.constantize.translated_searchable_columns([col1, col2]), params[:search_column]) %>
            <%= submit_tag 'Search' %>
        </p>
 <% end %>

现在你在调用它时使用render partial并传递三个参数col1 col2和my_table。它看起来像:

render :partial => 'mypartial', :locals => {:my_table => "ModelName", :col1 => 'col1', :col2 => 'col2'} 

通过这种方式,您可以动态发送模型名称和col变量。 BTW只是好奇,这被定义为一种方法吗?因为使用params hash而要求。您可能必须将这些参数哈希发送到:本地人。