Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 从控制器启动模式_Jquery_Ruby On Rails_Ruby_Jquery Ui - Fatal编程技术网

Jquery 从控制器启动模式

Jquery 从控制器启动模式,jquery,ruby-on-rails,ruby,jquery-ui,Jquery,Ruby On Rails,Ruby,Jquery Ui,我试图从我的控制器向用户显示一个模式窗口(使用jqueryui对话框) 例如: def create if params[:id] #do something else #show a modal window with a partial as content end Thx for your help=)这是一个修复程序,但可能对您有用 控制器 def create if params[:id] #true code else render

我试图从我的控制器向用户显示一个模式窗口(使用jqueryui对话框)

例如:

def create
  if params[:id]
    #do something
  else
    #show a modal window with a partial as content
end

Thx for your help=)

这是一个修复程序,但可能对您有用

控制器

def create
  if params[:id]
    #true code
  else
    render :new
    @dialog = true
  end    
end
关于你的new.html.erb

<% if @dialog %>
  <%= #dialog code %>
<% else %>
  <%= #normal code %>
<% end %>

您不能从控制器显示jQuery对话框,因为您不能在服务器端执行JavaScript。最接近于此的方法是发回一个JavaScript字符串,以便在客户端进行计算,但这是一种非常糟糕的做法。最好的办法是在服务器端键入一些内容,然后在客户端执行对话代码。如果您不想在erb模板中使用大量JavaScript,可以从那里调用函数,或者通过AJAX进行提交,让处理程序执行对话框或呈现一个既可以呈现部分内容又可以执行JavaScript的js.erb模板。如果您想要上述任何一个示例,请告诉我,我会看看是否可以提供一个。

如何调用您的创建操作,通过提交还是通过Javascript方法?您想要这样的操作吗
如果@valid\u attributes,则保存并重定向else render new and show modal form
。我试图显示一个模式,如果用户提交了一个未知的东西,就创建一个新的东西。您好,谢谢您的回答。我已经想出了这个解决方案,但我想找到一个更优雅的方法。我很有兴趣看到最干净的方法,也是最干燥的方法:)thx的时间
<% form_for @product do |f| %>
  <% if @product.errors %>
    <%= #dialog code %>
  <% end %>
<% end %>