我正在构建此应用,用户应该能够在同一页面中执行所有休息操作。所以在下面的表格下面:
<div class="row">
<div class="col-lg-3">Name</div>
<div class="col-lg-4">Lastname</div>
<div class="col-lg-3">Schedule</div>
<div class="col-lg-1"> </div>
<div class="col-lg-1"> </div>
</div>
<div id="table-body-clients">
<% @clients.each do |client| %>
<%= render :partial => 'client', :locals => { :client => client } %>
<% end %>
</div>
我应该添加一个表单来添加一个新客户端(相同的表单将加载和编辑所选的客户端。全部在远程)。
我能想到的最简单的方法就是呈现新的&#39;页面作为部分。但我似乎没有找到正确行动和/或正确加载当地人的方法。 这不起作用:
<%= render 'new', :controller => "clients", :action => "new", :locals => { :client => @client } %>
无论如何,我很感激对此代码的修复,以及对正确解决问题的正确方法的见解。 感谢
答案 0 :(得分:0)
创建部分_form.html.erb
,如下所示
<%= form_for client do |f| %>
your form fields here
<% end %>
然后,从new.html.erb
和edit.html.erb
,或您需要表单的任何页面:
<%= render "form", client: @client %>
将@client替换为您需要表单的实际client
对象。
答案 1 :(得分:0)
应该能够在同一页面中执行所有休息操作
不要担心在同一页面上执行操作 - 确保将您的视图保持在资源丰富的Rails样式中,但是在您想要的视图中调用它们(与部分页面相同)
如您所示,您可以这样做:
<%= render "clients/new", locals: { client: @client } %>
为了给您一个警告,您需要了解,因为您正在创建 new client
,所以您需要在控制器中构建资源:
#app/controllers/clients_controller.rb
class ClientsController < ApplicationController
def index
@clients = Client.all
@client = Client.new
end
end
-
如你所说,你有一个nested route
(IE client
属于company
),你想确保你有以下设置:
#config/routes.rb
resources :companies do
resources :clients #-> domain.com/companies/:company_id/clients
end
#app/controllers/clients_controller.rb
class ClientsController < ApplicationController
def index
@clients = Client.all
@company = Company.find params[:company_id]
@client = Client.new
end
end
#app/views/clients/index.html.erb
<%= render "new", locals: {company: @company, client: @client} %>
#app/views/clients/new.html.erb
<%= form_for [company, client] do |f| %>
...
<% end %>