所以这是我的表格
<% 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
答案 0 :(得分:1)
我记不起rails中的确切默认行为,但您是否尝试在控制器操作结束时添加respond_to:
respond_to(:html, :js)
希望这有帮助。
修改强>
我回过头来检查Rails在渲染视图方面的默认行为。在这种情况下,Rails更喜欢约定优于配置。默认行为是Rails自动呈现具有与操作对应的名称的视图。如果您遵守此约定,则不再需要respond_to。这是documentation。
只是想用正确的信息更新我的帖子...很高兴你能解决问题。
答案 1 :(得分:1)
我将模板命名为create.rjs.js而不是create.js.rjs,这就是为什么我没有工作