2013-07-29 43 views
15

Theo quan điểm simple_form, nút gửi là như thế này:Có cách nào để chuyển thông số khi nhấp vào nút gửi trong dạng xem đơn giản trong đường ray 3.2.12 không?

<%= f.button :submit, 'Save' %> 

Chúng tôi đang cố gắng để vượt qua một params subaction khi nhấp vào nút Save. params[:subaction] phải có giá trị 'cập nhật' sau khi nhấp vào nút. Đây là những gì chúng tôi đã cố gắng theo quan điểm nhưng nó đã không làm việc:

<%= f.button :submit, 'Save', :subaction => 'update' %> 

Có cách nào để vượt qua một giá trị trong params[:subaction] khi nhấp vào nút Save?

Trả lời

27

Sử dụng tùy chọn tên và giá trị.

<%= f.button :submit , name: "subaction",value: "update"%> 

Trong điều khiển của bạn, bạn sẽ nhận được params [: subaction] với giá trị "cập nhật"

+0

Đã thử <% = f.button: gửi, tên: 'subaction', value: for_which,: class => BUTTONS_CLS ['action']%> và for_which là một chuỗi và params [: subaction] là 0. Nó không hoạt động. – user938363

+0

Tôi đang sử dụng mã này và đang hoạt động. Vui lòng xem nhật ký trong khi gửi biểu mẫu cho dù thông số đang gửi hay không. –

+8

chỉ cần thử điều này và nó làm việc cho những gì tôi cần, nhưng nó thay đổi văn bản của nút gửi đến giá trị của "value:" - có cách nào để giữ tên/giá trị cho bộ điều khiển thông tin cần thiết trong khi vẫn có tên lựa chọn của tôi cho nút gửi? tức là: văn bản nút phải là "sinh viên tiếp theo" nhưng "2" '<% = f.submit" Học sinh tiếp theo ",: class => 'big_button round unelectable', name:" student_group_id ", value: @ student_group.id%> ' – dax

15

như dax chỉ ra,

<%= hidden_field_tag(:subaction, 'update') %> 
<%= f.button :submit, 'Save' %> 

này sẽ cung cấp giá trị chuỗi 'cập nhật' để hành động bộ điều khiển được định tuyến thông qua trường ẩn. Sau đó nó có thể được lấy ra bởi bộ điều khiển với

params[:subaction] 
6

Bằng cách xác định f.button :button, type: 'submit', chúng ta có thể sử dụng namevalue thuộc tính như sau nộp sử dụng một param duy nhất. Đáng chú ý, giá trị được gửi (ví dụ: 'bánh') có thể khác với văn bản nút (ví dụ: 'Bánh tốt nhất').

_form.html.erb

<%= f.button :button, 'The Best Cake', type: 'submit', name: 'dessert_choice', value: 'cake' %> 
<%= f.button :button, 'The Best Pie', type: 'submit', name: 'dessert_choice', value: 'pie' %> 

khiển

def controller_action 
    dessert_choice = params[:dessert_choice] # 'cake' or 'pie' 
end 

Cách tiếp cận này tránh sự cần thiết cho các đầu vào ẩn như @dax đề cập trong các bình luận trên.

Thử nghiệm trên biểu mẫu đơn giản 3.3.1 với đường ray 4.2.