remote_form_for不调用rjs模板

时间:2010-02-10 19:29:05

标签: ruby-on-rails ajax

所以这是我的表格

<% remote_form_for([:admin, Page.new]) do |f| %>
    <ol>
        <li>
            <%= f.label(:title) %>
            <%= f.text_field(:title) %>
        </li> 
        <li> 
            <%= f.label(:parent_page) %>
            <%= f.select(:parent_page_id, Page.roots.map { |p| [p.title, p.id] }.unshift(["none", nil])) %>
        </li>
    </ol>
    <div class="modal-controls">
        <%= submit_tag("Save") %> or <%= link_to_function("cancel", "R.Pages.hideAdd();") %>
    </div>
<% end %>

我的行动

def create
  @page = Page.create(params[:page])
  @languages = Language.all
  @languages.each do |language|
  @page.page_languages.create(:language_id => language.id)
end

由于某种原因,提交的for不会调用create.js.rjs模板,而是尝试调用create.html.erb,我是否需要使用表单进行某种额外设置?

顺便说一句,我正在使用rails 2.3.5

2 个答案:

答案 0 :(得分:1)

我记不起rails中的确切默认行为,但您是否尝试在控制器操作结束时添加respond_to:

respond_to(:html, :js)

希望这有帮助。

修改

我回过头来检查Rails在渲染视图方面的默认行为。在这种情况下,Rails更喜欢约定优于配置。默认行为是Rails自动呈现具有与操作对应的名称的视图。如果您遵守此约定,则不再需要respond_to。这是documentation

只是想用正确的信息更新我的帖子...很高兴你能解决问题。

答案 1 :(得分:1)

我将模板命名为create.rjs.js而不是create.js.rjs,这就是为什么我没有工作