ruby rails使用按钮编辑属性

时间:2011-09-06 21:01:59

标签: ruby-on-rails ruby-on-rails-3

假设我有一个显示/ transactions / id

的对象@transaction
def show
    @transaction = Transaction.find(params[:id]);
end

在show.html.erb中,我希望有一个按钮,按下时会更改Transaction的一个属性。我该怎么做?

在show.html.erb中,我有

<%= form_for @transaction do |t| %>
    <%= t.label :id %> : <%= @transaction.id %><br />

    <%= t.submit "pay" %>
<% end %>
编辑:我想我可能误导了这个问题。上面的按钮代码生成了这个html:

<input id="transaction_submit" name="commit" type="submit" value="pay" />

单击按钮时,将调用控制器中的“update”方法。如何将值从按钮传递到更新方法中的特定操作?例如,假设button1将transaction.name更改为“lalala”。我该怎么做?

def update
  // if button1 is pressed, change transaction.name to lalala
  // if button2 is pressed, change transaction.amount to bobobo
end

2 个答案:

答案 0 :(得分:4)

为每个按钮使用不同的表单:

 <%= form_for @transaction do |t| %>
     <%= t.hidden_field :name, :value=>"mike">
     <%= t.submit "change_name_to_mike" %>
   <% end %>

   <%= form_for @transaction do |t| %>
     <%= t.hidden_field :name, :value=>"john"%>
     <%= t.submit "change_name_to_john`" %>
   <% end %>

希望得到这个帮助。

答案 1 :(得分:1)

或者通过Ajax来做。例如,您可以拥有link_to "Delete votes", delete_votes_path(user), :remote => true(或其他)。然后,操作可以执行它需要的任何操作,并且可能返回将使用新值更新div / span / whatever的JavaScript,以及显示消息等等。

这更优雅一点,Rails使得创建一点点Ajaxy功能变得非常容易,从而增加了用户体验,但却不费吹灰之力。琐碎,天真的例子here