Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
表单中的Ruby子级父级_Ruby_Ruby On Rails 3_Parent Child_Helper - Fatal编程技术网

表单中的Ruby子级父级

表单中的Ruby子级父级,ruby,ruby-on-rails-3,parent-child,helper,Ruby,Ruby On Rails 3,Parent Child,Helper,这是我一直试图解决的问题,但我还没有找到一种不让人感觉像是彻头彻尾的黑客攻击的方法。我有两个东西,仓库和城市。仓库对象具有StateCity对象(state\u city\u id)的外键 现在,当用户创建仓库时,我希望他们能够输入州和城市。目前他们可以这样做,我只需检查提交的状态和城市参数,然后创建或查找相应的ActiveRecord对象。现在,当他们在我的视图中查看仓库时,我在使用助手从StateCity对象(如果存在)中提取State/City和在我的模型上添加方法以执行以下相同的功能之间

这是我一直试图解决的问题,但我还没有找到一种不让人感觉像是彻头彻尾的黑客攻击的方法。我有两个东西,仓库和城市。仓库对象具有StateCity对象(state\u city\u id)的外键

现在,当用户创建仓库时,我希望他们能够输入州和城市。目前他们可以这样做,我只需检查提交的状态和城市参数,然后创建或查找相应的ActiveRecord对象。现在,当他们在我的视图中查看仓库时,我在使用助手从StateCity对象(如果存在)中提取State/City和在我的模型上添加方法以执行以下相同的功能之间摇摆不定

def show_state( warehouse )
  if warehouse.state_city.nil? == false
    return warehouse.state_city.state
  end
  return ""
end

def show_city( warehouse )
  if warehouse.state_city.nil? == false
    return warehouse.state_city.city
  end
  return ""
 end
不幸的是,无论是helper方法还是用额外的函数充实模型似乎都不是很自然,因为我必须使用一种方法来创建对象,另一种方法用于创建对象


我想知道是否有人对解决仓库状态问题的更好方法有什么建议。非常感谢您的帮助。

首先,您可以写这样的声明:

return warehouse.state_city.city unless warehouse.state_city.nil?
但我相信这不是你想要的答案

我假设你总是希望一个仓库与一个州相关。如果是这种情况,那么每当创建仓库时,用户总是需要选择州和城市,并且该逻辑由控制器处理并由仓库模型验证

如果所有验证都正确,那么在仓库模型的显示操作中需要做的就是从仓库中获取StateCity对象:

@state_city = warehouse.state_city
然后在您的视图中,只需访问字段
@state\u city.state
@state\u city.city
。我不完全确定您是如何创建这些StateCity对象的,但这听起来很像您想要做的事情

如果你所在的州或城市为零,你可以根据你想显示或不想显示的内容以不同的方式处理。如果仍要显示warehouse show视图,则可以在视图中执行如下检查

<% if @state_city %>
  # Do something with the state city like display the state and city?
<% end %>

它将检查你的州/市是否为空,然后将用户重定向到你想要的任何操作

谢谢!我现在不能尝试这个,但是我完全忘记了视图可以访问控制器变量。如果它起作用,你是第一个打勾的人。只有一个问题,如果我的州是空的呢?我如何才能使我的观点不被这篇文章所扼杀(假设他们当时可能不确定纽约州)?我可能不得不单独离开这个州和这个城市。
unless @state_city
  redirect_to "your edit action" and return
end