RubyOnRails,ActiveScaffold

时间:2017-02-20 23:28:26

标签: ruby-on-rails ruby session activescaffold

我使用活动脚手架

表中有很多数据,所以实际上就是这种情况下的分页。

关于公司的表打印数据,如果我检查一个 - 所以我们在表中只看到这一个。用户检查 - 保存在会话变量中。

偶尔我突然去其他页面看到有关其他公司的数据。

似乎会话丢失或更改

任何人都有同样的问题。

class TLForConfirmController < ApplicationController
    layout 'application'
    before_action :update_as_config
    active_scaffold :tl do |config|
      #config.sti_children = :tl_change
      FIRST_PART_COLUMNS=   [:id_org_by_year,:organization_name, :start_date,:end_date]
      SECOND_PART_FIRST_HALF_COLUMNS=[:tl_short_type_first_half,:main_subject_first_half,:day_of_week_first_half]
      SECOND_PART_SECOND_HALF_COLUMNS=[:tl_short_type,:main_subject,:day_of_week]

      config.list.per_page = 100

      config.columns[:id_org_by_year].set_link(link_for_association(config.columns[:tl_changes]))
    end

    def self.reflect_on_all_associations
        TL.reflect_on_all_associations
    end

    def  conditions_for_collection // here attached session[:act_organization] to question
        sql_filter=''
        if  !session[:tl_status].blank? and session[:tl_status].to_s.to_i!=Activity::STATUS_DELETED and  session[:act_id].to_i==0
          sql_filter=' activity_status_id in ('+ session[:tl_status].join(',')+ ')'
        end
        # logger.info "    check session ----------> " + session[:act_organization].inspect
        if !session[:act_organization].blank? and session[:act_organization][0]>0 
            unless sql_filter.empty?
              sql_filter=sql_filter+' and '
            end
            sql_filter=sql_filter+'organization_id in ( '+(Array session[:act_organization]).to_a.join(',')+ ')'
        end
        unless sql_filter.empty?
            ['('+sql_filter+')']
        end
    end
end

list_to_confirm.html.erb:

<%if @sql_filter.empty?%>
<%= render :active_scaffold => 'tl_for_confirm',
:params => {:file_time => Time.now.strftime("%Y%m%d%H%M%S")},:locals => {:file_time1 => Time.now.strftime("%Y%m%d%H%M%S")} %>
<%else%>
<%= render :active_scaffold => 'tl_for_confirm', :conditions => @sql_filter , :params => {:file_time => Time.now.strftime("%Y%m%d%H%M%S")} %>
<% end %>

Controller:tl_controller.rb

TLController< ApplicationController
    def search_results // here code sends after Submit for define sesions
        if request.post?

        if !params[:search][:organization_id].blank?
            session[:act_organization]=get_array_codes_for_search(params[:search][:organization_id].to_a.collect { |item| item.to_i })
            logger.info " search_results " + session[:act_organization].inspect
        else
            session[:act_organization]=nil
        end
        end
    end

    def  list_to_confirm
    end

end

def get_array_codes_for_search(arr_code)
    rez=[]

     unless arr_code.blank?
      if arr_code[0].kind_of?(Array)
        arr_code = arr_code[0] 
      end
      if arr_code.kind_of?(String)  
        arr_code = (Array arr_code) 
      end

      unless arr_code.size==0
          arr_code.delete_if{|c| c.to_i<=0||c.to_s.empty? }
          res = arr_code.map{|i| i.to_i}
      end
     end
   return res

end

PS

  1. 我检查了日志文件:它确实为公司“取”了其他价值。
  2. 在控制器上运行任何相同的值(数字)
  3. 所以配置有2个文件:
    • session_store.rb: Rails.application.config.session_store :active_record_store, :key => '_my_app_session'
    • new_framework_defaults.rb:
  4. 此文件包含用于简化Rails 5.0升级的迁移选项。

    阅读Rails 5.0发行说明,了解有关每个选项的更多信息。

    启用每个表单的CSRF令牌。以前的版本都是假的。

    Rails.application.config.action_controller.per_form_csrf_tokens = true
    

    启用原始检查CSRF缓解。以前的版本有误。     Rails.application.config.action_controller.forgery_protection_origin_check = true

    在调用to_time时,让Ruby 2.4保留接收者的时区。 以前的版本都是假的。

    ActiveSupport.to_time_preserves_timezone = true
    

    默认情况下需要belongs_to个关联。以前的版本都是假的。

    Rails.application.config.active_record.belongs_to_required_by_default = true
    

    当回调返回false时,不要暂停回调链。以前的版本都是真的。

    ActiveSupport.halt_callback_chains_on_return_false = false
    

    配置SSL选项以启用具有子域的HSTS。以前的版本都是假的。

    Rails.application.config.ssl_options = { hsts: { subdomains: true } }
    

0 个答案:

没有答案