mirror of
https://github.com/kbparagua/paloma
synced 2023-03-27 23:21:17 -04:00
Update README.md
This commit is contained in:
parent
6aa2ef35a6
commit
3b2cf091e4
1 changed files with 108 additions and 30 deletions
138
README.md
138
README.md
|
@ -103,38 +103,13 @@ ArticlesController.prototype.edit = function(){
|
||||||
};
|
};
|
||||||
```
|
```
|
||||||
|
|
||||||
## Passing Parameters
|
|
||||||
|
|
||||||
You can also pass parameters to a Paloma Controller by calling `js` **before** render in your Rails controller. You can access the parameters on your Paloma Controller using `this.params` object.
|
|
||||||
|
|
||||||
**Example:**
|
|
||||||
|
|
||||||
`users_controller.rb`
|
|
||||||
```ruby
|
|
||||||
def destroy
|
|
||||||
user = User.find params[:id]
|
|
||||||
user.destroy
|
|
||||||
|
|
||||||
js :id => user.id
|
|
||||||
end
|
|
||||||
```
|
|
||||||
|
|
||||||
Paloma controller.
|
|
||||||
|
|
||||||
```javascript
|
|
||||||
var UsersController = Paloma.controller('Users');
|
|
||||||
|
|
||||||
UsersController.prototype.destroy = function(){
|
|
||||||
alert('User ' + this.params['id'] + ' is deleted.');
|
|
||||||
};
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
## Advanced Usage
|
## Advanced Usage
|
||||||
|
|
||||||
You can manipulate what controller/action should Paloma execute using the `js` method.
|
You can manipulate what controller/action should Paloma execute by calling `js` method **before** rendering.
|
||||||
|
|
||||||
1. Changing controller
|
1. Changing controller
|
||||||
|
|
||||||
```ruby
|
```ruby
|
||||||
class UsersController < ApplicationController
|
class UsersController < ApplicationController
|
||||||
def new
|
def new
|
||||||
|
@ -145,6 +120,7 @@ You can manipulate what controller/action should Paloma execute using the `js` m
|
||||||
```
|
```
|
||||||
|
|
||||||
2. Changing action
|
2. Changing action
|
||||||
|
|
||||||
You can use the symbol syntax:
|
You can use the symbol syntax:
|
||||||
```ruby
|
```ruby
|
||||||
def new
|
def new
|
||||||
|
@ -161,7 +137,8 @@ You can manipulate what controller/action should Paloma execute using the `js` m
|
||||||
end
|
end
|
||||||
```
|
```
|
||||||
|
|
||||||
3. Changing controller and action
|
3. Changing controller and action.
|
||||||
|
|
||||||
```ruby
|
```ruby
|
||||||
def new
|
def new
|
||||||
@user = User.new
|
@user = User.new
|
||||||
|
@ -169,7 +146,8 @@ You can manipulate what controller/action should Paloma execute using the `js` m
|
||||||
end
|
end
|
||||||
```
|
```
|
||||||
|
|
||||||
4. Changing controller with namespace
|
4. Changing controller with namespace.
|
||||||
|
|
||||||
Paloma supports namespaces using '/' as delimiter.
|
Paloma supports namespaces using '/' as delimiter.
|
||||||
|
|
||||||
```ruby
|
```ruby
|
||||||
|
@ -186,6 +164,46 @@ You can manipulate what controller/action should Paloma execute using the `js` m
|
||||||
end
|
end
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## Passing Parameters
|
||||||
|
|
||||||
|
You can access the parameters on your Paloma Controller using `this.params` object.
|
||||||
|
|
||||||
|
|
||||||
|
1. Parameters only.
|
||||||
|
|
||||||
|
`users_controller.rb`
|
||||||
|
```ruby
|
||||||
|
def destroy
|
||||||
|
user = User.find params[:id]
|
||||||
|
user.destroy
|
||||||
|
|
||||||
|
js :id => user.id
|
||||||
|
end
|
||||||
|
```
|
||||||
|
|
||||||
|
Paloma controller.
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
var UsersController = Paloma.controller('Users');
|
||||||
|
|
||||||
|
UsersController.prototype.destroy = function(){
|
||||||
|
alert('User ' + this.params['id'] + ' is deleted.');
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Path with parameters.
|
||||||
|
|
||||||
|
```ruby
|
||||||
|
def destroy
|
||||||
|
user = User.find params[:id]
|
||||||
|
user.destroy
|
||||||
|
|
||||||
|
js 'Accounts#delete', :id => user.id
|
||||||
|
end
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
## Preventing Paloma Execution
|
## Preventing Paloma Execution
|
||||||
|
|
||||||
If you want to Paloma not to execute in a specific Rails Controller action you need to pass `false` as the Paloma parameter.
|
If you want to Paloma not to execute in a specific Rails Controller action you need to pass `false` as the Paloma parameter.
|
||||||
|
@ -198,6 +216,66 @@ end
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## Controller-wide setup
|
||||||
|
|
||||||
|
You can call `js` outside Rails controller actions for global or controller-wide settings.
|
||||||
|
|
||||||
|
|
||||||
|
**Example:**
|
||||||
|
|
||||||
|
```ruby
|
||||||
|
class UsersController < ApplicationController
|
||||||
|
js 'Accounts' # use Accounts controller instead of Users for all actions.
|
||||||
|
|
||||||
|
|
||||||
|
def new
|
||||||
|
@user = User.new
|
||||||
|
end
|
||||||
|
|
||||||
|
def show
|
||||||
|
@user = User.find params[:id]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
```
|
||||||
|
|
||||||
|
Like `before_filter` you can also pass `only` and `except` options.
|
||||||
|
|
||||||
|
|
||||||
|
```ruby
|
||||||
|
class UsersController < ApplicationController
|
||||||
|
|
||||||
|
js 'Admin/Accounts', :except => :destroy # Use Admin/Accounts except for destroy method
|
||||||
|
|
||||||
|
end
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
**IMPORTANT NOTE:**
|
||||||
|
If you are going to pass parameters for Controller-wide settings, put them inside a `:params` hash.
|
||||||
|
|
||||||
|
```ruby
|
||||||
|
class UsersController < ApplicationController
|
||||||
|
js 'Accounts', :params => {:x => 1, :y => 2, :z => 3}, :only => :show
|
||||||
|
end
|
||||||
|
```
|
||||||
|
|
||||||
|
### Overriding Controller-wide setup
|
||||||
|
|
||||||
|
If you want to override the controller-wide setup, just call `js` again inside a controller action. From there you can override the controller/action or pass additional parameters.
|
||||||
|
|
||||||
|
```ruby
|
||||||
|
class UsersController < ApplicationController
|
||||||
|
|
||||||
|
js 'Accounts', :params => {:x => 1}
|
||||||
|
|
||||||
|
|
||||||
|
def new
|
||||||
|
@user = User.new
|
||||||
|
js :register, :y => 2 # will execute Accounts#register with params {:x => 1, :y => 2}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
```
|
||||||
|
|
||||||
## Gotchas
|
## Gotchas
|
||||||
|
|
||||||
* Paloma will not execute if the response is `js`, `json`, `xml` or any other format except `html`.
|
* Paloma will not execute if the response is `js`, `json`, `xml` or any other format except `html`.
|
||||||
|
@ -208,6 +286,6 @@ For example: `render "something.js.erb"`
|
||||||
## Where to put code?
|
## Where to put code?
|
||||||
|
|
||||||
Again, Paloma is now flexible and doesn't force developers to follow specific directory structure.
|
Again, Paloma is now flexible and doesn't force developers to follow specific directory structure.
|
||||||
You have the freedom to create controllers and routes anywhere in your application.
|
You have the freedom to create controllers anywhere in your application.
|
||||||
|
|
||||||
Personally, I prefer having a javascript file for each controller.
|
Personally, I prefer having a javascript file for each controller.
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue