我有一个rails 4应用程序,我有一行代码:
<%= f.select :type_of, %w[Bookshelf Birdhouse Book Cabinet], {},
onChange: "alert("<%= render 'stores/product_form/bookshelf', f:f %>")" %>
<div id='newContent'>
<%= render 'stores/product_form/bookshelf', f:f %>
</div>
我尝试做的是onChange of select,在指定的div #newContent中渲染部分并用jQuery&#39; s html()函数替换div的当前内容。
这可能吗?现在,使用我当前的代码我收到错误:
html.erb:18: syntax error, unexpected keyword_ensure, expecting ')'
修改
这是我的新选择/下拉代码:
<%= f.select :type_of, %w[Bookshelf Birdhouse Book Cabinet], {}, class: "",
onChange: 'alert(" #{ raw(render "stores/product_form/bookshelf", f:f)} ")' %>
我已经尝试过使用raw和without而且两种方式都不会呈现为ruby代码,它们只是呈现为html
答案 0 :(得分:0)
你太快做了渲染。您不希望将部分内容呈现到onChange处理程序中。你想要的是onChange处理程序触发部分的渲染。
你想要这样的东西:
User Selects Option in Dropdown
|
v
onChange Handler Runs
|
v
Handler triggers AJAX request
|
v
Server returns javascript partial
|
v
Handler processes AJAX response
|
v
AJAX response renders HTML onto page
查看How to make Ajax calls with Rails 3 using remote_function?了解一些实际的代码示例。