diff options
Diffstat (limited to 'guides/source')
-rw-r--r-- | guides/source/active_support_core_extensions.textile | 22 | ||||
-rw-r--r-- | guides/source/ajax_on_rails.textile | 9 | ||||
-rw-r--r-- | guides/source/association_basics.textile | 34 | ||||
-rw-r--r-- | guides/source/getting_started.textile | 17 | ||||
-rw-r--r-- | guides/source/layouts_and_rendering.textile | 2 |
5 files changed, 14 insertions, 70 deletions
diff --git a/guides/source/active_support_core_extensions.textile b/guides/source/active_support_core_extensions.textile index 99b8bdd3fd..66de6fd310 100644 --- a/guides/source/active_support_core_extensions.textile +++ b/guides/source/active_support_core_extensions.textile @@ -2783,27 +2783,7 @@ The method +assert_valid_keys+ receives an arbitrary number of arguments, and ch {:a => 1}.assert_valid_keys("a") # ArgumentError </ruby> -Active Record does not accept unknown options when building associations for example. It implements that control via +assert_valid_keys+: - -<ruby> -mattr_accessor :valid_keys_for_has_many_association -@@valid_keys_for_has_many_association = [ - :class_name, :table_name, :foreign_key, :primary_key, - :dependent, - :select, :conditions, :include, :order, :group, :having, :limit, :offset, - :as, :through, :source, :source_type, - :uniq, - :finder_sql, :counter_sql, - :before_add, :after_add, :before_remove, :after_remove, - :extend, :readonly, - :validate, :inverse_of -] - -def create_has_many_reflection(association_id, options, &extension) - options.assert_valid_keys(valid_keys_for_has_many_association) - ... -end -</ruby> +Active Record does not accept unknown options when building associations, for example. It implements that control via +assert_valid_keys+. NOTE: Defined in +active_support/core_ext/hash/keys.rb+. diff --git a/guides/source/ajax_on_rails.textile b/guides/source/ajax_on_rails.textile index e23fdf9a74..26e0270a31 100644 --- a/guides/source/ajax_on_rails.textile +++ b/guides/source/ajax_on_rails.textile @@ -129,7 +129,7 @@ will produce <ruby> button_to 'Delete Image', { action: 'delete', id: @image.id }, - confirm: 'Are you sure?', method: :delete + method: :delete, data: { confirm: 'Are you sure?' } </ruby> will produce @@ -144,8 +144,8 @@ will produce </html> <ruby> -button_to 'Destroy', 'http://www.example.com', confirm: 'Are you sure?', - method: 'delete', remote: true, data: { disable_with: 'loading...' } +button_to 'Destroy', 'http://www.example.com', + method: 'delete', remote: true, data: { disable_with: 'loading...', confirm: 'Are you sure?' } </ruby> will produce @@ -217,7 +217,6 @@ link_to_remote "Delete the item", Note that if we wouldn't override the default behavior (POST), the above snippet would route to the create action rather than destroy. ** *JavaScript filters* You can customize the remote call further by wrapping it with some JavaScript code. Let's say in the previous example, when deleting a link, you'd like to ask for a confirmation by showing a simple modal text box to the user. This is a typical example what you can accomplish with these options - let's see them one by one: -*** +:confirm+ => +msg+ Pops up a JavaScript confirmation dialog, displaying +msg+. If the user chooses 'OK', the request is launched, otherwise canceled. *** +:condition+ => +code+ Evaluates +code+ (which should evaluate to a boolean) and proceeds if it's true, cancels the request otherwise. *** +:before+ => +code+ Evaluates the +code+ just before launching the request. The output of the code has no influence on the execution. Typically used show a progress indicator (see this in action in the next example). *** +:after+ => +code+ Evaluates the +code+ after launching the request. Note that this is different from the +:success+ or +:complete+ callback (covered in the next section) since those are triggered after the request is completed, while the code snippet passed to +:after+ is evaluated after the remote call is made. A common example is to disable elements on the page or otherwise prevent further action while the request is completed. @@ -307,4 +306,4 @@ JavaScript testing reminds me the definition of the world 'classic' by Mark Twai * Cucumber+Webrat * Mention stuff like screw.unit/jsSpec -Note to self: check out the RailsConf JS testing video
\ No newline at end of file +Note to self: check out the RailsConf JS testing video diff --git a/guides/source/association_basics.textile b/guides/source/association_basics.textile index 8ddc56bef1..4dca7a508c 100644 --- a/guides/source/association_basics.textile +++ b/guides/source/association_basics.textile @@ -1257,10 +1257,8 @@ The +has_many+ association supports these options: * +:autosave+ * +:class_name+ * +:conditions+ -* +:counter_sql+ * +:dependent+ * +:extend+ -* +:finder_sql+ * +:foreign_key+ * +:group+ * +:include+ @@ -1326,12 +1324,6 @@ class Customer < ActiveRecord::Base end </ruby> -h6(#has_many-counter_sql). +:counter_sql+ - -Normally Rails automatically generates the proper SQL to count the association members. With the +:counter_sql+ option, you can specify a complete SQL statement to count them yourself. - -NOTE: If you specify +:finder_sql+ but not +:counter_sql+, then the counter SQL will be generated by substituting the +SELECT ... FROM+ clause of your +:finder_sql+ statement by +SELECT COUNT(*) FROM+. - h6(#has_many-dependent). +:dependent+ If you set the +:dependent+ option to +:destroy+, then deleting this object will call the +destroy+ method on the associated objects to delete those objects. If you set the +:dependent+ option to +:delete_all+, then deleting this object will delete the associated objects _without_ calling their +destroy+ method. If you set the +:dependent+ option to +:nullify+, then deleting this object will set the foreign key in the associated objects to +NULL+. @@ -1345,10 +1337,6 @@ h6(#has_many-extend). +:extend+ The +:extend+ option specifies a named module to extend the association proxy. Association extensions are discussed in detail <a href="#association-extensions">later in this guide</a>. -h6(#has_many-finder_sql). +:finder_sql+ - -Normally Rails automatically generates the proper SQL to fetch the association members. With the +:finder_sql+ option, you can specify a complete SQL statement to fetch them yourself. If fetching objects requires complex multi-table SQL, this may be necessary. - h6(#has_many-foreign_key). +:foreign_key+ By convention, Rails assumes that the column used to hold the foreign key on the other model is the name of this model with the suffix +_id+ added. The +:foreign_key+ option lets you set the name of the foreign key directly: @@ -1700,14 +1688,10 @@ The +has_and_belongs_to_many+ association supports these options: * +:autosave+ * +:class_name+ * +:conditions+ -* +:counter_sql+ -* +:delete_sql+ * +:extend+ -* +:finder_sql+ * +:foreign_key+ * +:group+ * +:include+ -* +:insert_sql+ * +:join_table+ * +:limit+ * +:offset+ @@ -1767,24 +1751,10 @@ end If you use a hash-style +:conditions+ option, then record creation via this association will be automatically scoped using the hash. In this case, using +@parts.assemblies.create+ or +@parts.assemblies.build+ will create orders where the +factory+ column has the value "Seattle". -h6(#has_and_belongs_to_many-counter_sql). +:counter_sql+ - -Normally Rails automatically generates the proper SQL to count the association members. With the +:counter_sql+ option, you can specify a complete SQL statement to count them yourself. - -NOTE: If you specify +:finder_sql+ but not +:counter_sql+, then the counter SQL will be generated by substituting the +SELECT ... FROM+ clause of your +:finder_sql+ statement by +SELECT COUNT(*) FROM+. - -h6(#has_and_belongs_to_many-delete_sql). +:delete_sql+ - -Normally Rails automatically generates the proper SQL to remove links between the associated classes. With the +:delete_sql+ option, you can specify a complete SQL statement to delete them yourself. - h6(#has_and_belongs_to_many-extend). +:extend+ The +:extend+ option specifies a named module to extend the association proxy. Association extensions are discussed in detail <a href="#association-extensions">later in this guide</a>. -h6(#has_and_belongs_to_many-finder_sql). +:finder_sql+ - -Normally Rails automatically generates the proper SQL to fetch the association members. With the +:finder_sql+ option, you can specify a complete SQL statement to fetch them yourself. If fetching objects requires complex multi-table SQL, this may be necessary. - h6(#has_and_belongs_to_many-foreign_key). +:foreign_key+ By convention, Rails assumes that the column in the join table used to hold the foreign key pointing to this model is the name of this model with the suffix +_id+ added. The +:foreign_key+ option lets you set the name of the foreign key directly: @@ -1811,10 +1781,6 @@ h6(#has_and_belongs_to_many-include). +:include+ You can use the +:include+ option to specify second-order associations that should be eager-loaded when this association is used. -h6(#has_and_belongs_to_many-insert_sql). +:insert_sql+ - -Normally Rails automatically generates the proper SQL to create links between the associated classes. With the +:insert_sql+ option, you can specify a complete SQL statement to insert them yourself. - h6(#has_and_belongs_to_many-join_table). +:join_table+ If the default name of the join table, based on lexical ordering, is not what you want, you can use the +:join_table+ option to override the default. diff --git a/guides/source/getting_started.textile b/guides/source/getting_started.textile index b00d9af00c..8d7c0d4bea 100644 --- a/guides/source/getting_started.textile +++ b/guides/source/getting_started.textile @@ -1144,7 +1144,7 @@ together. <td><%= post.text %></td> <td><%= link_to 'Show', :action => :show, :id => post.id %></td> <td><%= link_to 'Edit', :action => :edit, :id => post.id %></td> - <td><%= link_to 'Destroy', { :action => :destroy, :id => post.id }, :method => :delete, :confirm => 'Are you sure?' %></td> + <td><%= link_to 'Destroy', { :action => :destroy, :id => post.id }, :method => :delete, :data => { :confirm => 'Are you sure?' } %></td> </tr> <% end %> </table> @@ -1152,13 +1152,12 @@ together. Here we're using +link_to+ in a different way. We wrap the +:action+ and +:id+ attributes in a hash so that we can pass those two keys in -first as one argument, and then the final two keys as another argument. The +:method+ and +:confirm+ +first as one argument, and then the final two keys as another argument. The +:method+ and +:'data-confirm'+ options are used as HTML5 attributes so that when the link is clicked, -Rails will first show a confirm dialog to the user, and then submit the -link with method +delete+. This is done via the JavaScript file +jquery_ujs+ -which is automatically included into your application's layout -(+app/views/layouts/application.html.erb+) when you generated the application. -Without this file, the confirmation dialog box wouldn't appear. +Rails will first show a confirm dialog to the user, and then submit the link with method +delete+. +This is done via the JavaScript file +jquery_ujs+ which is automatically included +into your application's layout (+app/views/layouts/application.html.erb+) when you +generated the application. Without this file, the confirmation dialog box wouldn't appear. !images/getting_started/confirm_dialog.png(Confirm Dialog)! @@ -1627,8 +1626,8 @@ So first, let's add the delete link in the <p> <%= link_to 'Destroy Comment', [comment.post, comment], - :confirm => 'Are you sure?', - :method => :delete %> + :method => :delete, + :data => { :confirm => 'Are you sure?' } %> </p> </erb> diff --git a/guides/source/layouts_and_rendering.textile b/guides/source/layouts_and_rendering.textile index 55bd521419..32ceecea18 100644 --- a/guides/source/layouts_and_rendering.textile +++ b/guides/source/layouts_and_rendering.textile @@ -78,7 +78,7 @@ If we want to display the properties of all the books in our view, we can do so <td><%= book.content %></td> <td><%= link_to "Show", book %></td> <td><%= link_to "Edit", edit_book_path(book) %></td> - <td><%= link_to "Remove", book, :confirm => "Are you sure?", :method => :delete %></td> + <td><%= link_to "Remove", book, :method => :delete, :data => { :confirm => "Are you sure?" } %></td> </tr> <% end %> </table> |