gpt4 book ai didi

jquery - Rails 嵌套资源 - 使用 form_for 部分创建和编辑 2 个级别

转载 作者:太空宇宙 更新时间:2023-11-03 16:54:38 25 4
gpt4 key购买 nike

为了这个我真的绞尽脑汁。我是 Rails 的新手,正在尝试做一些我确信不太困难的事情。

我有一个模型“旅行”,它有很多“天”,有很多“事件”

我在“Trip”的 show.html.erb View 中,在这个 View 中,我正在渲染一个表单的部分内容,该表单应该允许我创建一个新的“事件”以与“一天”或编辑已属于“日”的现有“事件”

如何以部分形式传递给 form_for,即我要为其创建新“事件”的“Day”的局部变量。并使用相同的部分形式,如何检索与“事件”关联的“日”?最终这些将是 AJAX 加载的对象。在过去的几个小时里,我用谷歌搜索,找不到任何与此类似的例子。非常感谢您的帮助。

routes.rb

  resources :trips do
resources :days
end

resources :days do
resources :activities
end

旅行的 show.html.erb

<div id="activities_list">
<%= render :partial => "activities" %>
</div>

<div id="activity_form">
<%= render :partial => "/activities/form", :locals => { :activity => @activity} %>
</div>

<div id="bottom">
<%= link_to 'Edit', edit_trip_path(@trip) %> |
<%= link_to 'Back', trips_path %>
</div>

_activities.html.erb 部分

<h1><%= @trip.title %></h1>

<% @trip.days.each do |day| %>
<div id="blech_<%= day.id %>">
<b><%= day.summary %></b>
<% day.activities.each do |activity| %>
<li id="activity_<%= activity.id %>"><%= link_to activity.address, edit_day_activity_path(day, activity), :remote => true %></li>
<% end %>
<% end %>
<%= link_to 'New Activity', new_day_activity_path(day), :remote => true %>
</div>
<% end %>

_form.html.erb partial 我知道我需要使用 (@day,@activity) 变量调用 day_activity_path。但我不知道如何在此处获取@day 变量

  <%= form_for([@activity], :remote => true) do |f| %>
<fieldset>
<%= f.label :title, "Activity" %><br />
<%= f.text_field :title, :rows => 1 %><br />
</fieldset>

<div class="actions">
<%= f.submit %>
</div>
<% end %>

最佳答案

好吧,假设您想在一天中添加一个新事件。

不要忘记我们在这里使用 REST (http://old.thoughtsincomputation.com/posts/understanding-rest-in-rails-3)

我们的一天一定有很多事件我们的事件属于一天

class Day < ActiveRecord::Base
has_many :activities
end

class Activity < ActiveRecord::Base
belongs_to :day
end

我们的路线应该是这样的

resources :days do
resources :activities
end

通过该路由,我们生成的路径类似于

days_path
day_path
new_day_path

new_day_activity_path
delete_day_activity_path
edit_day_activity_path

在我们的日 View 中,我们位于 localhost:3000/days/1 之类的 url 中(DaysController, Action 秀)

在这种情况下,我们可以添加一个@activity = Activity.new并部分添加下面的表格

<%= form_for [@day, @activity] do |form_field| %>
rest_code_goes_here
<% end %>

此表单将在 ActivityController 中提交,action :create with the day并且 Controller 将检查验证并保存它。

看看这个链接是一个小应用程序,我用过类似的东西 https://github.com/leftis/tefteraki/blob/master/app/views/debts/_new_dose.haml

关于jquery - Rails 嵌套资源 - 使用 form_for 部分创建和编辑 2 个级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13247589/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com