Rails:使用控制器渲染js.erb模板

我有一个Rails应用程序尝试合并一些AJAX,在其中单击“新建”将打开一个模式窗口和一个表单。我希望能够显示验证错误(如果失败),因此在我的create动作中,我考虑过重新呈现new.js.erb文件。这是正确的方法吗?

def create

@place = Place.new(params[:place])

if @place.save

redirect_to places_path, :notice => "Successfully created place"

else

render "new.js.erb"

end

end

我得到的结果是浏览器中的转义js文本,例如:

$("#new_grouping").html("<div class=\"modal-header\">\n  <a class=\"close\" data-   dismiss=\"modal\">×<\/a>\n  <h3>Create a new menu section<\/h3>\n<\/div>\n<form accept-charset=\"UTF-8\" action=\"/places/1-mama-s-pizza/groupings\" class=\"simple_form new_grouping\" id=\"new_grouping\" method=\"post\" novalidate=\"novalidate\">

我尝试将各种选项放入渲染块,但没有运气。有小费吗?

回答:

最好的做法是同时支持AJAX和Non-AJAX调用,以防用户出于任何原因关闭了javascript。

def create

@place = Place.new(params[:place])

respond_to do |format|

if @place.save

format.html { redirect_to places_path, :notice => "Successfully created place" }

format.js # renders create.js.erb, which could be used to redirect via javascript

else

format.html { render :action => 'new' }

format.js { render :action => 'new' }

end

end

end

render :action =>

'new'实际呈现控制器动作的模板new,其结果new.html.erb分别new.js.erb取决于它是否是一个非AJAX或AJAX调用。

输入new.js.erb您的ERB / javascript代码:

$("#new_grouping").html("<%= escape_javascript(...) %>">

以上是 Rails:使用控制器渲染js.erb模板 的全部内容, 来源链接: utcz.com/qa/402364.html

回到顶部