2015-06-23 2 views
0

Я хочу использовать кнопку внутри HTML, используя информацию из самого HTML.Ruby in HTML button-method

Подробнее:

Существует html.erb файл. Там лежали 2 <input type="hidden" name="Name" value='Tom'> и кнопка.

В файле html.erb я мог получить значение, набрав params['Name']. Но вот моя проблема. Я понятия не имею, как писать кнопку, чтобы она сохраняла только @user, когда я нажимаю на нее. Поэтому метод кнопки должно быть что-то вроде:

@user.name = params["Name"] 
@user.age = params["Age"] 
@user.save 

Для меня это выглядит как самый простой, если я имел этот метод (кнопки) в HTML, где @user, имя и возраст сохраняются. Но я новичок в рубине, так что я знаю.

+0

Пожалуйста, смотрите пример button_to из http://apidock.com/rails/ActionView/Helpers/UrlHelper/button_to –

+1

Я предполагаю, что это находится в Rails Посмотреть? Если это так, хеш params доступен только в контроллере, и вам нужно будет установить эти значения в переменные экземпляра, чтобы они были доступны в представлении. –

ответ

0

В контроллере, где у вас есть доступ к params['Name'] и params['Age'], чтобы сохранить или обновить существующую:

@user.name = params["Name"] 
@user.age = params["Age"] 
@user.save 

более Рельсы-й путь, однако использовать form_for, чтобы создать форму для объекта :

# show.html.erb (or whatever controller action the view is for) 
<% form_for @user do |f| %> 
    <%= f.text_field :name %> 
    <%= f.text_field :age %> 
    <%= button_to "Save User" %> 
<% end %> 

# user_controller.rb 
# If creating: 
@user = User.new(params[:user]) 
# or for updating: (no need for save) 
# @user.update_attributes(params[:user]) 
@user.save 

с :age и :name будут переданы в :user хэша, глядя, как это:

user: { 
    name: "John", 
    age: 18 
} 

, которые могут быть переданы в User.new или @user.update_attributes и он установит @user.name и @user.age из хэша.

Я предлагаю просмотр saving data in the controller секцию Rails руководства

+0

Я думаю, что у вас есть неправильная идея. '@ user' является экземпляром пользовательского класса, необходимого в этом html. '@ name' не существует только' @ user.name' Название кнопки «Сохранить пользователя»: кнопка «Сохранить пользователя»: '@ user.name = params ['Name']' '@ user.age = params ['Age'] ' Это позволило бы сохранить имя и возраст? – JavaJawa

+0

Понятно, что вам не нужно было это делать в 'UserController', вы не можете сделать это из представления – SuckerForMayhem

+0

К сожалению, у меня нет доступа к параметрам ['Name']' и 'params ['Age' ] 'в контроллере. – JavaJawa