我正试图将多个变量传递给一个render语句,该语句将使用以下命令呈现_form分部:
$(document).ready(function() {
$('#contact_modal').click(function(event){
$("#modal-window").html("<%= escape_javascript(render 'contacts/form', new_contact: Contact.new ) %>");
我尝试通过以下操作传入两个变量:
new_contact: @contact, new_case: @case
但它似乎无法识别newtact和newcase变量。如何传入它们,然后在simple_form_for中使用它们?
编辑:我无法使用以下设置(case has_many contacts):
routes.rb
resources :contacts
resources :cases do
resources :contacts, :shallow => true
end
联系人_控制器.rb
def new
if params[:case_id]
@case = Case.find(params[:case_id])
@contact = @case.contacts.build
@create_case_contacts_array = [@case, @contact]
else
@contact = Contact.new
@create_case_contacts_array = @contact
end
end
def create
if params[:case_id]
@case = Case.find(params[:case_id])
@contact = @case.contacts.build(params[:contact])
else
@contact = Contact.new(contact_params)
end
@contact.user = @user
...
end
index.html.erb(调用模态的地方)
$("#modal-window").html("<%= escape_javascript( render :partial => "contacts/form", :locals => { :new_case => @case, :new_contact => @contact} ) %>");
_form.html.erb
<%= simple_form_for(new_case, new_contact) do |f| %>
.
.
.
<%= f.button :submit %>
为什么我的案例/1/联系人页面不呈现(联系人索引)?我做错了什么?它与我渲染模态的index.html.erb行有关。我得到以下错误:
undefined method `model_name' for NilClass:Class
render :partial => "person", :locals => { :name => "david" ,:surname => "anderson"}
所以这就是它在你的情况下的工作方式:-
$("#modal-window").html("<%= escape_javascript( render :partial => "contacts/form", :locals => { :new_contact => @contact ,:new_case => @case} ) %>");
现在,只有在@contact and @case are present
new_contact
和new_case
解决了这个问题。
我只是没有通过contacts_controller.rb中的索引操作传入@contact。新操作实际上从未被调用,因为我是通过index.html.erb文件中的模态手动调用它的。