2015-07-10 51 views
0

大家都常常說,我在Ruby on Rails的新手),並有以下問題:如何通過active_scaffold添加條件鏈接?

我有一個搜索表單 https://www.dropbox.com/s/hmr85xh3ra28nsf/Screen%20Shot%202015-07-10%20at%2023.19.07.png?dl=0

,我想有添加新的MSISDN,如果它不能力存在。所以我造假插入,並希望有條件的鏈接添加到我的active_scaffold電網,而不是目前存在的:

config.action_links.add :submit_create, :label => "Create blacklisted user", :type => :record, :confirm => "Are you sure?", :inline => true, :method => :get 

這裏是我的控制器

>class CCare::UserstatusController < ApplicationController 

>before_filter :filter_search 

> verify :method => :post, 
>   :only => :stop, 
>   :redirect_to => { :action => :index } 
>   

    > active_scaffold :users do |config|  
    > config.label = "User Status" 
    > config.list.columns = [:msisdn, :user_agent, :network ]  
    > config.actions = [:search, :field_search, :list, :nested] 
    > config.actions.swap :search, :field_search 
    > config.field_search.columns = [:msisdn] 
    > config.columns[:id].label = "ID" 
    > config.columns[:id].search_sql = "users.id = ?" 
    > config.columns[:id].search_ui = :text 
    > 
    > config.columns[:msisdn].search_sql = "users.msisdn = ?" 
    > config.columns[:msisdn].search_ui = :text 
    > 
    > config.columns[:network].sort = {:sql => "network.network" } 
    > config.columns[:network].search_sql = "network.network" 
    > config.columns[:network].search_ui = :select 
    > config.columns[:network].actions_for_association_links = [:show] 
    > config.columns[:user_agent].label = "Device"   
    > config.nested.add_link("Subscriptions", [:user_service_list]) 
    > config.nested.add_link("Contact History", [:user_contact]) 
    >  config.action_links.add "show_stop_all", :label => "Stop All", :type > => :record, :crud_type => :create, :inline => true, :position => :after 
    > config.list.always_show_search = true 
    > end 

    > def update_table 
    > if params[:search].nil? and params[:nested].nil? 
    >  render :partial => "shared/empty_list", :layout => false 
    > else 
    >  if not params[:search][:id].nil? and not params[:search][:id].empty? >and not params[:search][:id] =~ /^[0-9]+$/ 
    >  flash[:error] = "ID is not a number" 
    >  render :partial => "shared/empty_list", :layout => false 
    >  return 
    >  end 
    >  if (is_msisdn_exist) 
    >  super 
    >  else 
    >  user = User.new 
    >  user.msisdn = params[:search][:msisdn] 
    >  user.user_list_id = 1 
    >  user.save 
    >  super 
    >  end 
    > end 
    > end 

我試圖把方法is_msisdn_exist到

active_scaffold :users do |config| 
    .... 
end 

但它返回錯誤:未找到方法。 如何實現我的條件鏈接?

回答

0

我在下面的方式解決了這個問題:

我添加參數,以我的鏈接 - :html_options = {}

config.action_links.add :submit_create, :label => "Create blacklisted user", :type => :record, :confirm => "Are you sure?", :inline => true, :method => :get, :html_options = {}

,並在我的控制器操作參數:

active_scaffold_config.action_links.each do |link|
link.html_options={:hidden=>true} if ['Create blacklisted user'].include? link.label
end