我想在rails中模仿asp.net get{}
set{}
,这是我在控制器中尝试的内容:
def get_segment=(segment)
if params[:s] != nil
segment = params[:s]
else
segment = "personal"
end
end
然后我试图像这样访问它:
@something = get_segment
但它总是以nil
返回。
我该怎么做?
由于
答案 0 :(得分:2)
为什么使用get segment =(segment)?
看起来你想要做的是测试参数[:s],所以=是不必要的,就像段参数一样。
def get_segment
if params[:s] != nil
params[:s]
else
"personal"
end
end
我认为这会给你你想要的东西。
答案 1 :(得分:1)
如果您只是想在C#中模仿get{}
set{}
,则属性Segment
private string _segment;
public string Segment {
get { return _segment; }
set { _segment = value; }
}
在Ruby中编写如下:
# get
def segment
@segment
end
# set
def segment=(value)
@segment = value
end
# if you don't have additional logic, you can just write
attr_accessor :segment
然后,您可以使用some_instance.segment
来检索值,使用some_instance.segment = some_value
来修改值。
根据上面的代码示例,如果s
参数不存在,您希望使用默认值获取def get_segment # or just "segment"
params[:s] || "personal"
end
参数。你应该定义一个getter,而不是你提供的setter形式。
{{1}}