如何模仿asp.net设置在rails中

时间:2013-03-23 13:50:45

标签: ruby-on-rails ruby

我想在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返回。

我该怎么做?

由于

2 个答案:

答案 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}}