0

我正在尝试get{} set{}在 rails 中模仿 asp.net,这是我在控制器中尝试的:

def get_segment=(segment)
    if params[:s] != nil
      segment = params[:s]
    else
      segment = "personal"
    end
end

然后我试图像这样访问它:

@something = get_segment

但它总是返回为nil.

我怎样才能做到这一点?

谢谢

4

2 回答 2

2

为什么要使用 get segment=(segment)?

看起来你想要做的是测试 params[:s],所以 = 是不必要的,段参数也是如此。

def get_segment
    if params[:s] != nil
      params[:s]
    else
      "personal"
    end
end

我认为这会给你你想要的。

于 2013-03-23T14:36:22.377 回答
1

如果你只是想get{} set{}在 C# 中模仿,属性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参数不存在,您希望使用默认值获取参数。您应该定义一个 getter,而不是您提供的 setter 形式。

def get_segment     # or just "segment"
    params[:s] || "personal"
end
于 2013-03-23T15:01:45.930 回答