我尝试了以下示例的解决方案:In Rails, how do you render JSON using a view?
但我的问题是数据库已经保存了JSON字符串,我拉了json字符串然后我应该能够在视图中显示JSON文件。
我正在使用这个因为Android平板电脑应该能够访问相同的网址但是根据其设置(通过POST发送)应该显示不同的JSON文件,Android平板电脑然后获取json并使用它来配置一些选项。
所以我已经有了一个完整的json文件,我正在寻找一种在视图中显示它的方法(没有渲染html标签和其他东西)。我尝试了以下(是的,我添加了respond_to:json):
# def show_json (@config is the record, @config.json_config is the actual json configuration file
@config = event.et_relationships.where(terminal_id: terminal).first
respond_to do |format|
format.json
end
然后我的观点
#show_json.json.erb
<%= @config.config_json %>
然后我看到的HTML(没有给出错误)
<html><head><style type="text/css"></style></head><body></body></html>
谢谢!
我正在使用rails 3.2.3
这是我的路线(仅相关部分)
match '/events/config', to: "events#show_json", as: :show_json
resources :events do
member do
get :select_item
get :category
end
end
然后是控制器(部分)
respond_to :html, :json, :js
def show_json
#terminal_id = params["mac"]
terminal_id = "3D:3D:3D:3D:3D:3D"
event = current_user.events.where("date(endtime) > ? AND date(starttime) < ?", Time.now.to_s, Time.now.to_s).first
if event.nil?
# Nothing got returned so we use the default event
event = current_user.events.where('"default" = ?', true).first
end
logger.info "MAC: #{terminal_id}"
terminal = current_user.terminals.where(serial: terminal_id).first
logger.info "Terminal: #{terminal.attributes.inspect}"
logger.info "#{event.attributes.inspect}"
@config = event.et_relationships.where(terminal_id: terminal).first
logger.info "CONFIG #{@config[:config_json]}"
respond_to do |format|
format.json { render json: @config[:config_json] }
end
end
答案 0 :(得分:1)
使用render
:
@config = event.et_relationships.where(terminal_id: terminal).first
respond_to do |format|
format.json { render json: @config }
end
然后你有路径/:model/:action.json
。