我今天发了两次类似的问题
how-to-use-local-or-instance-variable-in-ruby-code-in-coffeescript-in-haml-templ
ajax-in-rails-returns-alway-error-callback
我对这些问题很困惑,请允许我问。
我正在使用haml中的ajax来用控制器中的数据重新加载页面的一部分。
请看我的密码。
.html.haml
= render 'layouts/partial' #This is partial. I want to reload this part
:coffee
$('input#field').change ->
$.ajax
url: '/posts/gaga'
type: "POST"
dataType: 'text'
error: (jqXHR, textStatus, errorThrown) ->
alert "error"
success: (data, textStatus, jqXHR) ->
alert "success"
$('div.kore').html('#{ j( render( 'layouts/partial' ) )} ');posts_controller.rb
def gaga
@model = Model.new("blabla")
render :text => @model
end_partial.html.haml
- if @model
= @model.html_safe
- else
= "No data"首先,我认为数据可以从控制器获得@model实例变量,但它不能。
其次,我尝试使用_partial.html.haml从( jQuery )获取数据。
回调和响应以文本的形式正确返回。
如何从ajax响应数据传递数据以查看数据,或者还有其他方法?
抱歉,我的英语太粗俗了。我希望有人能给我线索。
提前感谢!
发布于 2015-04-19 14:42:10
您可以将ajax请求设置为/posts/gaga.json,并在控制器的gaga方法中:
respond_to do |format|
format.html
format.json { render :json => @model }
end如果打算也不通过ajax访问gaga.html.haml,则可能需要准备/posts/gaga视图文件;如果只打算在json中响应,则只需删除format.html即可。
为了澄清,我看到您希望在ajax请求之后重新加载这个部分。因此,与其:
$('div.kore').html('#{ j( render( 'layouts/partial' ) )} ');你可以这样做:
# inside gaga methods
format.json do
render(json: {
view: render_to_string(partial: 'layouts/partial', layout: false)
})
end现在在你的视野里:
= render 'layouts/partial' #This is partial. I want to reload this part
:coffee
$('input#field').change ->
$.ajax
url: '/posts/gaga.json'
type: "POST"
error: (jqXHR, textStatus, errorThrown) ->
alert "error"
success: (data, textStatus, jqXHR) ->
alert "success"
$('div.kore').html(data.view)https://stackoverflow.com/questions/29730864
复制相似问题