仅针对一个字段的远程操作的 Rails 表单

Rails form with remote action for only one field

提问人:mottalrd 提问时间:11/20/2012 更新时间:11/20/2012 访问量:448

问:

我在 Rails 3 中有一个表单,必须与普通帖子一起提交,如下所示

<%= form_for @seller, :as => :seller_user, :url => save_seller_url do |f| %>

但是其中的一个字段需要执行远程 AJAX 调用来更新一些值,就像这个一样

<%= f.select( ... ) %> => on change please make a remote call to fill new data here

我没有在网上找到任何将 :remote => true 选项添加到选择助手的文档,我错过了什么吗?
正确的处理方法是什么?
谢谢

ruby-on-rails-3 不显眼的javascript

评论


答:

1赞 n_i_c_k 11/20/2012 #1

我也为此苦苦挣扎了一段时间。我认为最好的“轨道方式”是这样的:

<%= form_tag(controller: "sellers", action: "your_controller_action") do %>
    OTHER FORM STUFF HERE
    <select name="some_select" id="some_select" onchange="your_javascript_function">
        <option> ... </option>
    </select>
    OTHER FORM STUFF HERE
    <%= submit_tag("Submit") %>
<% end %>

然后在你的控制器中处理提交,你可以像往常一样引用这个字段,如params[:some_select]

这假定您的控制器称为 sellers_controller。更多关于form_tag的信息 这里 和form_tag助手 这里

评论

1赞 mottalrd 11/20/2012
因此,您建议不要使用 select helper 函数,而是在链接到 onchange 事件的 JavaScript 处理程序中手动处理 ajax 调用?
0赞 n_i_c_k 11/21/2012
是的。只是因为我觉得轻松超过了尝试用form_for来做这件事的麻烦