我正在使用ruby 2.3.1和rails 3.2.1。我需要在应用程序控制器中初始化一个名为has_sub_menu = true
的变量。
在我的应用程序中,我使用了30多个控制器,只有两个控制器包含子菜单,所以我需要将application.rb
分配给这些控制器,以便在布局文件中对其进行验证。
这是我的has_sub_menu = false
has_sub_menu = true
some_controller01.rb
has_sub_menu = true
some_controller02.rb
layout.rb
我在if controller.has_sub_menu == true
show_menu_items
end
,
show_menu_items
has_sub_menu
将在该两个控制器中可用,目前我无法访问布局文件中的application
值
我知道在c#中我可以将变量声明为static并使用object在任何文件中访问它。
同样如何在int hCrt = _open_osfhandle((intptr_t)hNamedPipe, _O_TEXT);
FILE *hf = _fdopen(hCrt, "w");
*stdout = *hf;
setvbuf(stdout, NULL, _IONBF, 0);
控制器中声明变量并在其他两个控制器中为该变量分配不同的值,我需要在layout.rb文件中访问该值以进行子菜单验证。
答案 0 :(得分:1)
在public class MainActivity extends AppCompatActivity {
Realm realm;
@BindView(R.id.realm_recycler)
RecyclerView recyclerView;
RealmResults<SomeObject> listenerSet;
RealmChangeListener realmChangeListener = new RealmChangeListener() {
@Override
public void onChange(Object element) {
if(recyclerView != null && recyclerView.getAdapter() != null) {
recyclerView.getAdapter().notifyDataSetChanged();
}
}
});
@Override
public void onCreate(Bundle bundle) {
super.onCreate(bundle);
realm = Realm.getDefaultInstance();
setContentView(R.layout.activity_main);
ButterKnife.bind(this);
listenerSet = realm.where(SomeObject.class).findAll();
listenerSet.addChangeListener(realmChangeListener);
// set up recyclerView
adapter.updateData(realm.where(SomeObject.class).findAll());
}
@Override
public void onDestroy() {
super.onDestroy();
if(realm != null) {
realm.close();
realm = null;
}
}
}
中添加一个实例方法,并在任何控制器中覆盖它,该控制器应具有不同的值:
application_controller.rb
这样您就可以在所有控制器中访问class ApplicationController < ActionController::Base
def has_sub_menu # unless overriden in descending controller, value will be true
true
end
end
class OtherController < ApplicationController
def has_sub_menu
false
end
end
“方法”。
答案 1 :(得分:1)
相反,您可以创建辅助方法并检查控制器名称
function long_command() {
cat $1 | grep -vE '[a-fA-F0-9]{5}' | \
cat -n | sed -e 's/ / /g' | \
sed -e 's/^ *//g' | \
sort -k 3,3 -k 1n,1n | \
uniq -f 2 | \
sed -e 's/^[0-9]\{1,\} //' | \
grep -Ev '^\s*PATTERN\s+' | \
cat -n
}