2015-12-04 3 views
1

Я новичок в рельсах, и я хочу, чтобы мой контроллер обновил поле label/html в поле зрения с переменной @msg, созданной из действия. Прямо сейчас у меня есть,Rails: как отправить строку из контроллера для просмотра?

Просмотр формы:

<%= form_tag({controller: "home", action: "drawMoney"}) do %> 
<h1> Draw Out </h1> 
    <%= number_field_tag :draw, min: 1, max:1000 %> 
    <%= date_field_tag :customDate %> 
<%= submit_tag "Save" %> 
<% end %> 

<p> 
    <%= "#{@msg}" %> 
</p> 

Контроллер

def drawMoney 
@drawAmount = params[:draw] 
@credit = Credit.getCredit('1') 
@updateAmount = updatePrincipal(@credit.principal, @drawAmount) 
@newLimit = updateLimit(@credit.currLimit, @drawAmount) 

@msg = "success!" 

if (@transaction = Transaction.create(userId: @credit.userId, date: params[:customDate], OPB: @credit.principal, amount: @drawAmount).valid?) 
    @credit.update(principal: @updateAmount, currLimit: @newLimit) 
    @transaction = Transaction.create(userId: @credit.userId, date: params[:customDate], OPB: @credit.principal, amount: @drawAmount) 
else 
    @msg = "not valid" 
end 

redirect_to action: "index" 
end 

Я прочитал рубин документы и юность учебник, пытался ставить @msg в представлении вместо и @msg в HTML и т. д., но это ничего не печатает в представлении и не может найти ответы на поиск. Любая помощь будет оценена!

EDIT:

Я попытался изменить к <% = @msg%>, но он не работает .. поэтому метод вызывается, когда я нажимаю на кнопку отправки, и до тех пор не @msg пример. Может быть, это проблема?

+0

Это потому, что вы перенаправлении. Он теряет все ваши переменные. Используйте вспышку как @imechemi предлагает –

ответ

3

При перенаправлении на индекс текущие определенные переменные будут очищены.

контроллер

flash[:msg] = "Success" 
redirect_to action: "index" 

вид

<% if flash[:msg] %> 
    <div class="message"><%= flash[:msg] %></div> 
<% end %> 
+0

эй спасибо, что это сработало! :) –

0

Попробуйте это:

<pre> 
    <%= @msg %> 
</pre> 
+0

решил! Спасибо за вход –

0

Изменить это <%= "#{@msg}" %> к <%= @msg %> Вам не придется интерполировать здесь, рельсы просмотра имеют прямой доступ к контроллеру случаи, когда вы создаете его с символом @.

+1

Спасибо за вход! :) –

+0

@imechemi правильный, важный пункт. при переадресации на индекс переменные в индексе теперь доступны в представлении. –

Смежные вопросы