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