加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 基于现有资源的表单挑战Rails问题

发布时间:2020-12-17 01:59:51 所属栏目:百科 来源:网络整理
导读:您有一组通过支架创建的相关模型,例如一所房子,有许多房间,每个房间都有许多窗户,每个窗户都有各种锁. 这些资源已经充满了数据,即有人输入了所有信息,例如:一个叫做“厨房”的房间有各种与之相关的窗户,这些窗户每个都有五个与它们相关的不同锁. 有人出现并
您有一组通过支架创建的相关模型,例如一所房子,有许多房间,每个房间都有许多窗户,每个窗户都有各种锁.
这些资源已经充满了数据,即有人输入了所有信息,例如:一个叫做“厨房”的房间有各种与之相关的窗户,这些窗户每个都有五个与它们相关的不同锁.

有人出现并说:

Can you create a form that lets someone create a new project where they can select the different rooms,windows and then specify the locks that they would like for that project? (these are already in the system,nothing new to add,just the associations to a new project)

这听起来像一个嵌套的形式,但我浪费了很多时间试图解决这个问题 – 有许多级别的嵌套,这使得这很棘手.有什么建议?

解决方法

会话解决方案

有了这样深度嵌套的模型,前端的选择框就不够了……
假设这样,您可能想要创建一个current_house,其id在会话中存在(就像current_user一样).

通过导航到项目列表视图并单击add_to链接,让current_house添加不同的项目:

# house_controller.rb
  def add_to
    current_house.polymorphic_items << Kitchen.find(params[:id])
    redirect_to :back
  end

但是这种基于会话的解决方案有很多种方法可以实现购物车/订单系统.您可能需要添加一个current_item来添加树的每个叶子中的内容,即您房屋的房间.

E.G点击您刚添加的厨房后:

before_filter :set_current_item

def add_to
  current_item.windows << Window.find(id)
end

current_item beeing polymorphic:起居室,浴室等.
但是你如何实现它正是取决于你的域模型….

作为关于嵌套表单的经验法则,我会遵循路线的轨道指导:不要超过一个级别,否则你最终会陷入混乱.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读