开发者

Any possible way to set radio_button_tag values by a database set value

I have a radio_button_tag in a form, which holds various values for a persons current availability:

Mike Donnall o Available o Out of office o Vacation

So originally you open the form, and select a value, this then sets the value in the Status table for that Person.

However, there's also functionality to re-open the form and update his present status, perhaps from Vacation to Available.

My question is, is there anywa开发者_如何学Goy at all that radio button :checked can be modified to accept a custom method, I have found something in a similar posting, but I want the value foe that radio button to be set to the value in the DB.

My code so far, a stab in the dark perhaps:

View:

<% @people.each do |p| %>
    <% @statuses.each do |s| %>
        <%= "#{p.name}" %>
        <%= "#{s.status_name}" -%><%= radio_button_tag ['person', p.id], ['status',     
             s.id], checked?(p.id) %>
 <% end %>
<% end %>

Helper:

def checked?(person)
    @person = person
    @status = Status.find_by_sql(['select status_id from statuses where person_id = ?, @person])

    if @result
 return true

end

As you can see Im a bit lost here, but I understand that the method should return the value of the checkbox that needs to be checked, but Im wondering because its a checked functionality, would it only be limited to being a true or false?

So for a persons.status.id check if its true or false.


It seems from your helper's SQL that you the following relationship setup between People and Statuses:

class Person < ActiveRecord::Base
  has_one :status
end

class Status < ActiveRecord::Base
  belongs_to :person
end

You can access one given person status like this:

person = Person.first
person_status = person.status

Using that knowledge, your desired view outcome becomes quite simple:

<% @people.each do |p| %>
  <p><%= "#{p.name}" -%>
  <% @statuses.each do |s| %>
    <%= "#{s.status_name}" -%>
    <%= radio_button_tag ['person', p.id], 
                         ['status', s.id],
                         (p.status == s) ? true : false %>
  <% end %>
<% end %>

You can of course extract the logic to a helper, but that doesn't seem necessary.

On a personal note, this isn't the way I'd present the information to user, it' too heavy on information in one line. I suggest you put the person's name in a p tag, and use a ul tag for the statuses.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜