从调用助手渲染部分的控制器操作返回的无内容
nocontent returned from controller action that calls helper rendering a partial
我基本上是在尝试使用一种辅助方法,该方法在我的控制器中呈现部分内容,并根据我正在尝试的变体出现无内容错误或 500 错误“无模板”。如果我只是直接从控制器操作 运行 助手中的代码,一切都很好。 rails 指南似乎没有触及这一点(使用进行渲染的辅助方法,而不是直接从控制器操作)。不幸的是,我现在没有足够的时间重构它,因为在其他地方使用了助手,而且在我看来,如果有办法在控制器操作中也使用这个助手,那是更好的选择。
有人知道怎么做吗?我正在尝试的任何事情都不适合我 :S
辅助方法
def render_call_orders_filters url_or_path_method, query_params = @query_params
render :partial => 'call_orders/call_orders_filters', :locals => {url_or_path_method: url_or_path_method, query_params: query_params}
end
控制器动作
# GET /call_order/filters
def filters
respond_to do |format|
format.html {
# This (of course) works...
# render :partial => 'call_orders/call_orders_filters', \
# :locals => { url_or_path_method: method(:call_orders_path), query_params: @query_params }
# This does not
helpers.render_call_orders_filters(method(:call_orders_path))
# This gives me a "Template is missing" 500 error
renter text: helpers.render_call_orders_filters(method(:call_orders_path))
}
end
end
根据您最后的示例代码,render :partial =>
有效
我觉得可以这样重构
# The helper...
def orders_filters_param_to_template(url_or_path_method, query_params = {})
{
partial: 'call_orders/call_orders_filters', locals: { url_or_path_method: url_or_path_method,
query_params: query_params }
}
end
def render_call_orders_filters(url_or_path_method, query_params = @query_params)
template_data = orders_filters_param_to_template(url_or_path_method, query_params)
render partial: template_data[:partial],
locals: template_data[:locals]
end
# The controller action...
def filters
respond_to do |format|
format.html do
template_data = helpers.orders_filters_param_to_template(method(:call_orders_path), @query_params)
render partial: template_data[:partial],
locals: template_data[:locals]
end
end
end
我基本上是在尝试使用一种辅助方法,该方法在我的控制器中呈现部分内容,并根据我正在尝试的变体出现无内容错误或 500 错误“无模板”。如果我只是直接从控制器操作 运行 助手中的代码,一切都很好。 rails 指南似乎没有触及这一点(使用进行渲染的辅助方法,而不是直接从控制器操作)。不幸的是,我现在没有足够的时间重构它,因为在其他地方使用了助手,而且在我看来,如果有办法在控制器操作中也使用这个助手,那是更好的选择。
有人知道怎么做吗?我正在尝试的任何事情都不适合我 :S
辅助方法
def render_call_orders_filters url_or_path_method, query_params = @query_params
render :partial => 'call_orders/call_orders_filters', :locals => {url_or_path_method: url_or_path_method, query_params: query_params}
end
控制器动作
# GET /call_order/filters
def filters
respond_to do |format|
format.html {
# This (of course) works...
# render :partial => 'call_orders/call_orders_filters', \
# :locals => { url_or_path_method: method(:call_orders_path), query_params: @query_params }
# This does not
helpers.render_call_orders_filters(method(:call_orders_path))
# This gives me a "Template is missing" 500 error
renter text: helpers.render_call_orders_filters(method(:call_orders_path))
}
end
end
根据您最后的示例代码,render :partial =>
有效
我觉得可以这样重构
# The helper...
def orders_filters_param_to_template(url_or_path_method, query_params = {})
{
partial: 'call_orders/call_orders_filters', locals: { url_or_path_method: url_or_path_method,
query_params: query_params }
}
end
def render_call_orders_filters(url_or_path_method, query_params = @query_params)
template_data = orders_filters_param_to_template(url_or_path_method, query_params)
render partial: template_data[:partial],
locals: template_data[:locals]
end
# The controller action...
def filters
respond_to do |format|
format.html do
template_data = helpers.orders_filters_param_to_template(method(:call_orders_path), @query_params)
render partial: template_data[:partial],
locals: template_data[:locals]
end
end
end