Приложение rails делает внешние запросы Salesforce через их API, чтобы вытащить некоторые записи. Когда я получаю эти записи в контроллере, я хотел бы использовать number_to_currency и link_to helper в некоторых из полей перед отправкой JSON в мое представление. Записи затем отображаются в отображаемой таблице. Я понимаю, что эти изменения должны будут иметь место в контроллере, но я не уверен, как это сделать перед обработкой json: @pendingloanparts.Рельсы используют помощников на полях перед созданием объектов JSON
Раньше стол выглядел так:
<td><%= loanpart.Loan__r.Business_Name__r.Name %></td>
<td><%= link_to loanpart.Loan__r.Name, loan_path(loanpart.Loan__r.Id) %></td>
<td><%= loanpart.Loan__r.Loan_Risk__c %></td>
<td><%= loanpart.Interest_Rate__c %>%</td>
<td><%= number_to_currency(loanpart.Amount_Lent__c) %></td>
<td><%= loanpart.Loan__r.Funded__c %>%</td>
<td><%= loanpart.Loan__r.Time_Left_on_Listing__c %></td>
Я теперь с помощью AJAX, чтобы вернуть данные из Salesforce API, когда будет получен ответ.
вид:
<script type="text/javascript">
$.ajax({
url: "/pull_pending_loans",
dataType: "json",
cache: false,
success: function(data){
$('#ajax-loader').hide()
$.each(data, function(index, element) {
console.log(element)
$('#pendingloanlist tbody').append("<tr><td>" + element.Loan__r.Business_Name__r.Name + "</td><td>"
+ element.Loan__r.Name + "</td><td>"
+ element.Loan__r.Loan_Risk__c + "</td><td>"
+ element.Interest_Rate__c + "%" + "</td><td>"
+ element.Amount_Lent__c + "</td><td>"
+ element.Loan__r.Funded__c + "%" + "</td><td>"
+ element.Loan__r.Time_Left_on_Listing__c + "</td></tr>");
});
}
});
</script>
<div class="profile container content">
<div class="row">
<%= render 'lenders/sidebar' %>
<!-- Begin Content -->
<div class="col-md-9">
<div class="profile-body">
<!-- Pending Loans -->
<div class="panel panel-purple margin-bottom-40" id="small">
<div class="panel-heading">
<h3 class="panel-title"><i class="fa fa-refresh"></i> Pending Loans</h3>
</div>
<div class="table-responsive">
<table class="table table-hover" id="pendingloanlist">
<thead>
<tr>
<th>Company</th>
<th>Loan Title</th>
<th>Risk</th>
<th>Rate</th>
<th>Amount</th>
<th>% Funded</th>
<th>Time Left</th>
</tr>
</thead>
<tbody>
<td colspan="100" id="ajax-loader">
<center><%= image_tag("loading.gif") %></center>
</td>
</tbody>
</table>
</div>
</div>
<!-- Pending Loans -->
</div>
</div>
<!-- End Content -->
</div>
</div>
действия контроллера:
def pull_pending_loans
@user = current_user
if @user.activated?
client = Restforce.new
@account = client.find('Account', @user.salesforce_id, 'Id')
pending_query = "select Loan__r.Business_Name__r.Name, Loan__r.Id, Loan__r.Name, Loan__r.Loan_Risk__c, Interest_Rate__c, Amount_Lent__c, Status__c, Loan__r.Time_Left_on_Listing__c, Loan__r.Funded__c from Loan_Part__c where Account__c ='%s' AND Status__c = 'Pledge'" % @account.Id.to_s
@pendingloanparts = client.query(pending_query)
render json: @pendingloanparts
end
end
def pending_loans
@user = current_user
end
Jbuilder выглядит интересно. Я не уверен, как включить json.jbuilder в свой обычный файл view.html.erb и правильно ли он отформатирован в таблице? – Questifer
Jbuilder решила мою проблему отлично. Спасибо за рекомендацию и объяснение. – Questifer