【问题标题】:Launch modal from controller从控制器启动模态
【发布时间】:2010-12-14 12:52:29
【问题描述】:

我正在尝试从我的控制器向用户显示一个模式窗口(使用 jquery ui 对话框)。

例如:

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

感谢您的帮助 =)

【问题讨论】:

  • 如何通过提交或 Javascript 方法调用创建操作
  • 你想要这样if @valid_attributes then save and redirect else render new and show modal form??
  • 就是这样。如果用户提交未知事物,我正在尝试显示一个模式来创建新事物。

标签: jquery ruby-on-rails ruby jquery-ui


【解决方案1】:

这是一个修复,但可能对你有用

控制器

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 %>

希望它有效。

更新

如果我在评论中问你的内容是正确的,那么你可以这样做

在您的new.html.erb 中,您可以这样做

<% form_for @product do |f| %>
  <% if @product.errors %>
    <%= #dialog code %>
  <% end %>
<% end %>

【讨论】:

  • 嗨,谢谢你的回答。我已经想出了这个解决方案,但我想找到一种更优雅的方法。
【解决方案2】:

您无法从控制器显示 jQuery 对话框,因为您无法在服务器端执行 JavaScript。最接近这一点的方法是发回一个 JavaScript 字符串以在客户端进行评估,但这是非常糟糕的做法。你最好的选择是在服务器端关闭一些东西并在客户端做你的对话代码。如果您不想在您的 erb 模板中使用一堆 JavaScript,您可以从那里调用一个函数,或者您可以通过 AJAX 进行提交,然后让您的处理程序执行对话框或渲染一个可以渲染的 js.erb 模板部分和做JavaScript。如果您想要上述任何一个示例,请告诉我,我会看看是否可以提供。

【讨论】:

  • 我很想看看最干净的方法,也是最干燥的方法:)谢谢你的时间
猜你喜欢
  • 1970-01-01
  • 2015-03-05
  • 1970-01-01
  • 2023-03-09
  • 2015-03-30
  • 2010-10-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多