Modal-如何传入正确的变量以在javascript中呈现



我正试图将多个变量传递给一个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_contactnew_case

解决了这个问题。

我只是没有通过contacts_controller.rb中的索引操作传入@contact。新操作实际上从未被调用,因为我是通过index.html.erb文件中的模态手动调用它的。

最新更新